ส่วนประกอบสำหรับการแสดงข้อมูลกราฟิกในเดลฟี การนำเสนอในหัวข้อ "การแสดงข้อมูลกราฟิกใน Delphi" ข้อมูลโดยย่อจากทฤษฎี

การทำงานกับกราฟิกใน Delphi ไม่ใช่แค่เส้นและภาพวาดเท่านั้น แต่ยังรวมถึงการพิมพ์ด้วย เอกสารข้อความ. ดังนั้นใน เดลฟีในที่ทำงานพร้อมกราฟิกคุณต้องใช้เวลาสักหน่อย ทำงานกับ กราฟิกใน Delphiเกี่ยวข้องกับการเข้าถึงแคนวาส - คุณสมบัติแคนวาสของส่วนประกอบ แคนวาส เดลฟีนี่คือผืนผ้าใบที่ช่วยให้โปรแกรมเมอร์สามารถเข้าถึงแต่ละจุด (พิกเซล) และแสดงสิ่งที่จำเป็นเช่นเดียวกับศิลปิน แน่นอนว่าต้องวาดทีละพิกเซลเพื่อ การทำงานกับกราฟิกไม่จำเป็นใน Delphi ระบบ Delphi มอบพลังอันทรงพลัง เครื่องมือกราฟิกทำให้งานของโปรแกรมเมอร์ง่ายขึ้น

เมื่อทำงานกับกราฟิกใน Delphi โปรแกรมเมอร์จะมีโครงร่าง (ผืนผ้าใบ, ผืนผ้าใบ - คุณสมบัติ) ผ้าใบส่วนประกอบเดลฟี) ดินสอ (คุณสมบัติ ปากกา) แปรง (คุณสมบัติแปรง) ของส่วนประกอบหรือวัตถุที่คุณควรทาสี ที่ดินสอ ปากกาและแปรง แปรงคุณสามารถเปลี่ยนสี (คุณสมบัติสี) และสไตล์ (คุณสมบัติสไตล์) การเข้าถึงแบบอักษรมีให้โดยคุณสมบัติ canvas แบบอักษร. เครื่องมือเหล่านี้ช่วยให้คุณสามารถแสดงทั้งข้อความและกราฟที่ค่อนข้างซับซ้อนของเนื้อหาทางคณิตศาสตร์และวิศวกรรมตลอดจนภาพวาด นอกจาก, การทำงานกับกราฟิกอนุญาตให้คุณใช้ทรัพยากรดังกล่าวใน Delphi หน้าต่างเช่นไฟล์กราฟิกและวิดีโอ

แน่นอนว่าไม่ใช่ทุกองค์ประกอบใน Delphi จะมีคุณสมบัติเหล่านี้ บนแท็บ เพิ่มเติมมีส่วนประกอบเฉพาะอยู่ ทีอิมเมจออกแบบมาโดยเฉพาะสำหรับการวาดภาพแต่ยังรวมถึงคุณสมบัติด้วย ผ้าใบมี ตัวอย่างเช่น ส่วนประกอบเช่น ListBox, ComboBox, StringGrid รวมถึงตัวแบบฟอร์มเองซึ่งวางส่วนประกอบของเรา! นอกจากนี้ ในการพิมพ์เอกสาร Delphi ยังเข้าถึงคุณสมบัติ Canvas ของวัตถุ เช่น เครื่องพิมพ์

คุณสมบัติหลักของวัตถุเช่น Canvas Delphi คือ พิกเซลพิมพ์ ทีคัลเลอร์นั่นคือเป็นอาร์เรย์สองมิติของจุด (พิกเซล) ที่ระบุด้วยสี การวาดภาพบนผืนผ้าใบเกิดขึ้นในขณะที่กำหนดสีให้กับจุดใดๆ บนผืนผ้าใบ แต่ละพิกเซลสามารถกำหนดได้สำหรับ สีของหน้าต่าง. เช่น การดำเนินการตามคำสั่ง

Image1.Canvas.Pixels:=clRed;

จะส่งผลให้วาดจุดสีแดงพร้อมพิกัด คุณสามารถค้นหาสีของพิกเซลได้โดยการกำหนดแบบผกผัน:

สี:=รูปภาพ1.ผ้าใบพิกเซล;

พิมพ์ ทีคัลเลอร์กำหนดเป็นจำนวนเต็มยาว (LongInt) ไบต์สี่ไบต์ประกอบด้วยข้อมูลเกี่ยวกับสัดส่วนของสีน้ำเงิน (B) สีเขียว (G) และสีแดง (R) ในระบบเลขฐานสิบหก ดูเหมือนว่า: $00BBGGRR. สัดส่วนของแต่ละสีอาจแตกต่างกันได้ตั้งแต่ 0 ถึง 255 ดังนั้น เพื่อที่จะแสดงจุดสีแดงสูงสุด จึงจำเป็นต้องกำหนด สี $000000FF.
สำหรับสีมาตรฐานใน Delphi จะมีการกำหนดชุดค่าคงที่ของข้อความ คุณสามารถดูได้โดยการเปิดคุณสมบัติ สี เช่น ของแบบฟอร์มเดียวกันในตัวตรวจสอบวัตถุ

ตารางต่อไปนี้มีคุณสมบัติและวิธีการของแคนวาส:

ขั้นตอน TextOut (X, Y: จำนวนเต็ม; ค่าคงที่ข้อความ: WideString);
สร้างเอาต์พุตสตริง ข้อความเริ่มต้นจาก (X, Y) - พิกเซลซ้ายบนของข้อความ
คุณสมบัติข้อความกว้าง( varข้อความ: สตริง): จำนวนเต็ม;
ประกอบด้วยความยาวของสตริง ข้อความเป็นพิกเซล
คุณสมบัติข้อความความสูง( varข้อความ: สตริง): จำนวนเต็ม;
ประกอบด้วยความสูงของเส้น ข้อความเป็นพิกเซล
ขั้นตอน MoveTo(X, Y: จำนวนเต็ม);
ย้ายตำแหน่งไปที่พิกเซลพร้อมที่อยู่ (X, Y)
ขั้นตอน LineTo(X, Y: Integer);
ลากเส้นตรงจากจุดของตำแหน่งปัจจุบันไปยังพิกเซลด้วยที่อยู่ (X, Y) ที่อยู่ (X, Y) จะกลายเป็นจุดของตำแหน่งปัจจุบัน
ขั้นตอน FillRect( ค่าคงที่สี่เหลี่ยมผืนผ้า: TRect);
เติมสี่เหลี่ยม สี่เหลี่ยมผืนผ้าบนผืนผ้าใบโดยใช้แปรงปัจจุบัน สามารถใช้เหนือสิ่งอื่นใดเพื่อลบส่วนหนึ่งของรูปภาพบนผืนผ้าใบ

มาเขียนแอปพลิเคชันสำหรับรูปภาพบนแคนวาสส่วนประกอบโดยใช้วิธีแคนวาสเหล่านี้เท่านั้น ภาพข้อความที่ป้อนลงในส่วนประกอบ บันทึก:

สิ่งแรกที่เราจะทำคือเตรียมใช้งานตัวแปรเมื่อโปรแกรมเริ่มทำงาน มีความจำเป็นต้องกำหนดขนาดของพื้นที่วาดภาพ (เราจะสร้างตัวแปรสากล Rect ประเภท TRect สำหรับสิ่งนี้) และตั้งค่าสีพื้นหลัง ภาพสีขาว:

ขั้นตอน TForm1.FormCreate (ผู้ส่ง: TObject);
เริ่ม
สี่เหลี่ยมผืนผ้าซ้าย:=0;
สี่เหลี่ยมผืนผ้าด้านบน:=0;
Rect.Right:=Image1.Width;
สี่เหลี่ยมผืนผ้าด้านล่าง:=Image1.Height;
Image1.Canvas.Brush.Color:=clWhite;
จบ;

จากนั้นวาดกรอบด้านข้างของภาพ:

ขั้นตอน TForm1.เพจ;
เริ่ม
กับ Image1.ผ้าใบ ทำ
เริ่ม
ย้ายไป(0, 0);
LineTo(Image1.Width-1, 0);
LineTo(Image1.Width-1, Image1.Height-1);
LineTo(0, Image1.Height-1);
เส้นถึง(0, 0);
จบ;
จบ;

มาลองดูว่าเกิดอะไรขึ้น ใช้งานได้ทุกอย่างแต่ยังไม่แสดงเฟรม ดังนั้นเรามาเพิ่มขั้นตอนกัน หน้าหนังสือในขั้นตอน สร้างแบบฟอร์ม. ตอนนี้ก็สวยแล้ว ต่อไปเราจะเขียน ขั้นตอนง่ายๆการลบล้างภาพ จะต้องถูกเรียกก่อนการอัปเดตรูปภาพใดๆ ไม่เช่นนั้นรูปภาพก่อนหน้าและถัดไปจะทับซ้อนกัน

ขั้นตอน TForm1.การหักล้าง;
เริ่ม
Image1.Canvas.FillRect(Rect); //สี่เหลี่ยมผืนผ้า สี่เหลี่ยมผืนผ้าเต็มไปด้วยสีขาวและภาพถูกลบ
จบ;

ตอนนี้ถึงคราวของขั้นตอนการส่งออกข้อความแล้ว มาเริ่มวาดข้อความจากจุด (3, 3) - มุมซ้ายบนของแผ่นงานโดยมีการเยื้องเล็กน้อย 3 พิกเซล แต่ละบรรทัดต่อมาจะถูกชดเชยด้วยความสูงของบรรทัด:

ขั้นตอน TForm1.prn;
varฉัน: จำนวนเต็ม;
เริ่ม
กับ Image1.ผ้าใบ ทำ
สำหรับฉัน:=1 ถึง Memo1.Lines.นับ ทำ
TextOut(3, 3+(i-1)*TextHeight("A"), Memo1.Lines);
จบ;

ตอนนี้ทุกอย่างพร้อมที่จะแสดงข้อความแล้ว เราจะทำสิ่งนี้โดยใช้เหตุการณ์ OnChange:

ขั้นตอน TForm1.Memo1Change(ผู้ส่ง: TObject);
เริ่ม
การหักล้าง;
พรน;
หน้าหนังสือ;
จบ;

และสุดท้าย ขั้นตอนการเปลี่ยนขนาดตัวอักษร:

ขั้นตอน TForm1.Edit1Change (ผู้ส่ง: TObject);
เริ่ม
Memo1.Font.Size:=UpDown1.Position;
Image1.Canvas.Font.Size:=UpDown1.Position;
Memo1Change(ผู้ส่ง);
จบ;

คุณสามารถแก้ไขโปรแกรมนี้เพื่อพิมพ์ข้อความได้ ในการทำงานกับเครื่องพิมพ์คุณต้องเชื่อมต่อโมดูล เครื่องพิมพ์:

หน่วยบทที่ 1;

อินเตอร์เฟซ

การใช้งาน
Windows, ข้อความ, SysUtils, ตัวแปร, คลาส, กราฟิก, การควบคุม, แบบฟอร์ม,
กล่องโต้ตอบ, StdCtrls, เครื่องพิมพ์ ;

เมื่อทำงานกับเครื่องพิมพ์เป็นผืนผ้าใบ วิธีการนี้จะถูกเรียกเพื่อเริ่มการพิมพ์ เริ่มต้นหมอจากนั้นเอกสารจะถูกส่งออก การพิมพ์จะเสร็จสิ้นโดยการเรียกเมธอด EndDoc:

เครื่องพิมพ์BeginDoc;
กับเครื่องพิมพ์ผ้าใบ ทำ
เริ่ม
...พิมพ์เอกสาร...
จบ;
เครื่องพิมพ์EndDoc;

ความกว้างและความสูงของเว็บเครื่องพิมพ์สามารถดูได้จากคุณสมบัติ เครื่องพิมพ์ PageWidthและ เครื่องพิมพ์ PageHeight. คุณสามารถพิมพ์หน้าหนึ่งให้เสร็จและเริ่มพิมพ์อีกหน้าหนึ่งโดยใช้วิธีนี้ เครื่องพิมพ์.NewPage.

รายการส่วนประกอบการแสดงผล ข้อมูลกราฟิก

ในการแสดงข้อมูลกราฟิก ไลบรารี Delphi ได้จัดเตรียมส่วนประกอบต่างๆ ไว้ตามรายการที่ระบุไว้ในตารางที่ 4.1

ตาราง 4.1 ส่วนประกอบการแสดงข้อมูลกราฟิก รูปสัญลักษณ์

ส่วนประกอบ

หน้าหนังสือ

คำอธิบาย

ภาพ

ใช้เพื่อแสดงกราฟิก: ไอคอน บิตแมป และเมตาไฟล์


PaintBox (หน้าต่างสำหรับวาดภาพ)

ใช้เพื่อสร้างพื้นที่บนแบบฟอร์มที่คุณสามารถวาดได้


DrawGrid (ตารางภาพวาด)

ใช้เพื่อแสดงข้อมูลที่ไม่ใช่ข้อความในแถวและคอลัมน์


แผนภูมิ (แผนภูมิและกราฟ)

ส่วนประกอบนี้เป็นของส่วนประกอบตระกูล TChart ซึ่งใช้ในการสร้างแผนภูมิและกราฟ


นอกจากนี้ คุณยังสามารถแสดงและป้อนข้อมูลกราฟิกบนพื้นผิวของกราฟิกดิสเพลย์ใดๆ บนผืนผ้าใบได้

ผ้าใบ ผ้าใบไม่ใช่ส่วนประกอบ ดังนั้นหากพูดอย่างเคร่งครัดแล้วไม่ควรพิจารณาภายในขอบเขตของหนังสือเล่มนี้ แต่เนื่องจากส่วนประกอบจำนวนมาก โดยเฉพาะรูปแบบ มีโครงร่างและโครงร่างทำให้สามารถแสดงข้อมูลกราฟิกต่างๆ ได้ จึงแนะนำให้ให้ข้อมูลเบื้องต้นเกี่ยวกับโครงร่าง

ผืนผ้าใบเป็นพื้นที่ของส่วนประกอบที่คุณสามารถวาดหรือแสดงภาพที่เสร็จแล้วได้ ประกอบด้วยคุณสมบัติและวิธีการที่ทำให้กราฟิก Delphi ง่ายขึ้นอย่างมาก การโต้ตอบที่ซับซ้อนทั้งหมดกับระบบจะถูกซ่อนไว้สำหรับผู้ใช้ ดังนั้นผู้ที่ไม่มีประสบการณ์ด้านคอมพิวเตอร์กราฟิกเลยสามารถวาดใน Delphi ได้

แต่ละจุดของเค้าร่างมีพิกัด เอ็กซ์และ . ระบบพิกัดผืนผ้าใบ เช่นเดียวกับที่อื่นๆ ในเดลฟี มีต้นกำเนิดที่มุมซ้ายบนของผืนผ้าใบ ประสานงาน เอ็กซ์เพิ่มขึ้นเมื่อเคลื่อนที่จากซ้ายไปขวาและพิกัด - เมื่อย้ายจากบนลงล่าง พิกัดวัดเป็นพิกเซล พิกเซลเป็นองค์ประกอบที่เล็กที่สุดของพื้นผิวการออกแบบที่สามารถปรับเปลี่ยนได้ คุณสมบัติที่สำคัญที่สุดของพิกเซลคือสีของพิกเซล

ผ้าใบมีคุณสมบัติ พิกเซล. คุณสมบัตินี้เป็นอาร์เรย์สองมิติที่รับผิดชอบสีของผืนผ้าใบ ตัวอย่างเช่น, ผ้าใบ. พิกเซลจับคู่สีของพิกเซลที่ 10 จากซ้ายและที่ 20 จากด้านบน คุณสามารถปฏิบัติต่ออาร์เรย์ของพิกเซลได้เหมือนกับคุณสมบัติใดๆ ก็ได้ เช่น เปลี่ยนสีโดยให้ค่าใหม่แก่พิกเซล หรือกำหนดค่าสีจากค่าที่เก็บไว้ในนั้น ตัวอย่างเช่น, ผ้าใบ. พิกเซล:=0หรือ ผ้าใบ. พิกเซล:=clBlack- นี่คือการตั้งค่าพิกเซลให้เป็นสีดำ

คุณสมบัติ พิกเซลสามารถใช้วาดภาพบนผืนผ้าใบได้ ลองวาดกราฟไซนัสอยด์แบบพิกเซลต่อพิกเซลบนโครงร่างของแบบฟอร์ม เมื่อต้องการทำเช่นนี้ในตัวจัดการเหตุการณ์ของฟอร์ม ออนเพ้นท์(รูปวาด) คุณสามารถใส่รหัสต่อไปนี้:

ทีฟอร์ม1. FormPaint (ผู้ส่ง: TObject);

var,Y:จริง; // พิกัดฟังก์ชัน,PY: ยาว; // พิกัดพิกเซล

เริ่ม:=clWhite;

สำหรับ PX:=0 ถึงความกว้างของไคลเอ็นต์ ทำ

(X คืออาร์กิวเมนต์กราฟ

:=PX*4*Pi/ClientWidth;:=บาป(X);

(PY - พิกัดพิกเซล

: =trunc (ClientHeight - (Y+1) *ClientHeight/2);

(กำหนดสีของภาพที่เลือก

พิกเซล (เกี่ยวกับความสว่าง). พิกเซล: = 0;

จบ;

เรียกใช้แอปพลิเคชันทดสอบนี้แล้วคุณจะเห็นผลลัพธ์ดังแสดงในรูปที่ 4.1 ก กราฟคลื่นไซน์ปรากฏออกมาแม้ว่าจะไม่ค่อยดีนักก็ตาม แบ่งออกเป็นแต่ละจุด - พิกเซล

Canvas - วัตถุคลาส ทีแคนวาสมีวิธีการมากมายที่ให้คุณวาดกราฟ เส้น รูปร่างโดยใช้คุณสมบัติได้ ปากกา- ขนนก. คุณสมบัตินี้คือออบเจ็กต์ ซึ่งจะมีคุณสมบัติจำนวนหนึ่ง หนึ่งในนั้นคือทรัพย์สินที่คุณรู้จักอยู่แล้ว สี- สีที่ใช้วาดภาพ ทรัพย์สินที่สอง - ความกว้าง(ความกว้างของเส้น) ความกว้างระบุเป็นพิกเซล ความกว้างเริ่มต้นคือ 1

คุณสมบัติ สไตล์กำหนดประเภทของเส้น คุณสมบัตินี้สามารถรับค่าต่อไปนี้:

ผ้าใบมีคุณสมบัติ ปากกาโปสพิมพ์ ทีพอยท์(ซม .) คุณสมบัตินี้กำหนดตำแหน่งปัจจุบันของปากกาในพิกัดผืนผ้าใบ การขยับปากกาโดยไม่ขีดเส้น เช่น เปลี่ยน ปากกาโปสผลิตโดยวิธีแคนวาส ย้ายไป(X,Y)ที่นี่ ( เอ็กซ์, ย) -พิกัดของจุดที่ปากกาเคลื่อนที่ จุดปัจจุบันนี้จะกลายเป็นจุดเริ่มต้นซึ่งเป็นวิธีการ เส้นถึง(X,Y)คุณสามารถวาดเส้นไปยังจุดที่มีพิกัด ( เอ็กซ์, ย)ในกรณีนี้ จุดปัจจุบันจะย้ายไปยังจุดสิ้นสุดของสายและการโทรใหม่ ไลน์ทูจะดึงจุดจากจุดปัจจุบันใหม่นี้

ลองวาดกราฟไซน์จากตัวอย่างก่อนหน้าด้วยปากกา ในกรณีนี้คือตัวจัดการเหตุการณ์ของฟอร์ม ออนเพ้นท์อาจมีลักษณะดังนี้:

ขั้นตอนทีฟอร์ม1. FormPaint (ผู้ส่ง: TObject);

var,Y:จริง; // พิกัดฟังก์ชัน,PY: ยาว; // พิกัดพิกเซล

เริ่ม: =clWhite;. MoveTo(0,ความสูงของไคลเอ็นต์ div 2);

สำหรับพิกเซล: =0 ถึงความกว้างของไคลเอ็นต์ ทำ

(X คืออาร์กิวเมนต์กราฟ

ตรงกับพิกเซลที่มีพิกัด Рх):=PX*4*Pi/ClientWidth;:=บาป(X);

(PY - พิกัดพิกเซล

ตรงกับพิกัด Y):=trunc(ClientHeight - (Y+1) *ClientHeight/2);

(มีการวาดเส้นบนกราฟ). เส้นถึง(PX,PY);

คุณสามารถดูผลลัพธ์ของแอปพลิเคชันในเวอร์ชันนี้ได้ในรูปที่ 4.1 b. อย่างที่คุณเห็นคุณภาพของกราฟิกได้รับการปรับปรุงอย่างมาก

ปากกาสามารถวาดได้ไม่เพียงแต่เป็นเส้นตรงแต่ยังสามารถวาดรูปร่างได้อีกด้วย สำหรับรายการวิธีการ Canvas ทั้งหมดที่ใช้ปากกา โปรดดูวิธีใช้ในตัวของ Delphi ในตอนนี้ เราจะยกตัวอย่างเพียงรายการเดียวเท่านั้น - วงรีซึ่งวาดวงรีหรือวงกลม โดยประกาศให้เป็น

ขั้นตอนวงรี(X1, Y1, X2, Y2: จำนวนเต็ม);

พารามิเตอร์อยู่ที่ไหน X1, X2, Y1, Y2กำหนดพิกัดของสี่เหลี่ยมที่อธิบายวงรีหรือวงกลม ตัวอย่างเช่นผู้ดำเนินการ

วงรี(10, 40, 20, 50);

จะวาดวงกลมที่มีเส้นผ่านศูนย์กลาง 10 และพิกัดศูนย์กลาง (15, 45)

ในกรณีทั่วไป ตัวเลขจะไม่ว่างเปล่า แต่กรอกโดยใช้คุณสมบัติ canvas แปรง- แปรง. คุณสมบัติ แปรงเป็นวัตถุที่มีคุณสมบัติหลายประการ คุณสมบัติ สีกำหนดสีเติม คุณสมบัติ สไตล์กำหนดรูปแบบการเติม (แรเงา) ค่าเริ่มต้น สไตล์เท่ากับ บีเอสโซลิดซึ่งหมายถึงการลงสีแบบทึบ สี.

ที่ปากกา ปากกามีทรัพย์สินอีกอย่างหนึ่งที่เรายังไม่ได้พิจารณา คุณสมบัตินี้คือ โหมด(โหมด). ค่าเริ่มต้น โหมด = pmCopy. ซึ่งหมายความว่าเส้นจะถูกวาดด้วยสีที่ระบุในคุณสมบัติ สี. แต่โหมดอื่นๆ ก็สามารถทำได้เช่นกัน โดยไม่เพียงคำนึงถึงสีเท่านั้น สีแต่ยังรวมถึงสีของพิกเซลพื้นหลังที่เกี่ยวข้องด้วย สิ่งที่น่าสนใจที่สุดของโหมดเหล่านี้คือ น.ไม่ใช่Xor- การบวกกับพื้นหลังโดยใช้เอกสิทธิ์เฉพาะแบบผกผันหรือ หากตั้งค่าโหมดนี้ การวาดรูปเดิมอีกครั้งในตำแหน่งเดิมบนผืนผ้าใบจะเป็นการลบรูปภาพที่วาดไว้ก่อนหน้านี้ และคืนค่าสีพิกเซลที่อยู่ก่อนรูปภาพแรกของรูปภาพ

คุณสมบัติของโหมดนี้ น.ไม่ใช่Xorสามารถใช้เพื่อสร้างภาพเคลื่อนไหวอย่างง่าย การวาดบางอย่างก็เพียงพอแล้วลบสิ่งที่คุณวาดวาดใหม่โดยเปลี่ยนแปลงเล็กน้อย - แล้วภาพวาดจะดูมีชีวิตขึ้นมา

ลองทำแอนิเมชั่นง่ายๆ ด้วยตัวเอง - วงกลมที่เคลื่อนไหว เริ่มแอปพลิเคชันใหม่และไปที่ การดำเนินการแทรกโฆษณา

X,Y: จำนวนเต็ม;

สิ่งนี้จะแนะนำตัวแปรส่วนกลาง เอ็กซ์และ - พิกัดภาพปัจจุบัน

ในงานฟอร์ม ออนเพ้นท์แทรกคำสั่ง

แปรง. สี:=clWhite;:=clWhite;. ปากกา. โหมด:=pmNotXor;

ตัวดำเนินการตัวแรกจะตั้งค่าสีแปรงเป็นสีขาว แปรง. ซึ่งหมายความว่าวงกลมของคุณจะถูกทาสีขาวภายใน ตัวดำเนินการที่สองตั้งค่าสีพื้นหลังของพื้นผิวแบบฟอร์มเป็นสีขาว

ตัวดำเนินการที่สามตั้งค่าโหมดปากกา น.ไม่ใช่Xorซึ่งจะช่วยให้คุณสามารถลบภาพเก่าก่อนที่จะวาดภาพใหม่ได้

แม้แต่แอนิเมชั่นที่ง่ายที่สุดก็ยังต้องมีการซิงโครไนซ์ มิฉะนั้นความเร็วในการเคลื่อนที่จะถูกกำหนดโดยความเร็วของคอมพิวเตอร์ ดังนั้นให้โอนส่วนประกอบไปที่แบบฟอร์ม ตัวจับเวลา- จับเวลาจากหน้าระบบ ส่วนประกอบนี้อธิบายไว้ในส่วน 5.7 .

คุณสามารถดูได้ที่นั่น คำอธิบายโดยละเอียด. สำหรับตอนนี้ ให้ตั้งค่าคุณสมบัติของมัน ช่วงเวลาเท่ากับ เช่น 30 (นี่คือเวลาเปิดรับแสงเป็นมิลลิวินาที แต่ เวลาจริงความเร็วชัตเตอร์จะนานขึ้น - ดูหัวข้อ 5.7) และตั้งค่าคุณสมบัติ เปิดใช้งานแล้วเท่ากัน เท็จ(ซึ่งหมายความว่าตัวจับเวลาจะไม่เริ่มโดยอัตโนมัติเมื่อเปิดแอปพลิเคชัน)

ในตัวจัดการเหตุการณ์ขององค์ประกอบนี้ ออนไทม์เมอร์แทรกคำสั่ง

// ลบภาพก่อนหน้า. วงรี (X-5, Y, X+5, Y-1Q);(X);

// วาดภาพใหม่. วงรี (X-5, Y, X+5, Y-10);

// หยุดเมื่อถึงจุดสิ้นสุดของแบบฟอร์ม

ถ้า(X >= ความกว้างของไคลเอ็นต์-20) แล้ว. เปิดใช้งาน: = เท็จ;

ตัวดำเนินการตัวแรกจะวาดวงกลมในตำแหน่งที่วาดไว้ก่อนหน้านี้ เช่น ลบภาพก่อนหน้า

ตัวดำเนินการตัวสุดท้ายหยุดรูปภาพที่ขอบของแบบฟอร์ม

ตอนนี้เพิ่มปุ่มลงในแบบฟอร์ม ปุ่มและวางตัวดำเนินการไว้ในตัวจัดการการคลิกบนตัวดำเนินการนั้น

เอ็กซ์: =10;: =100;. วงรี (X-5, Y, X+5, Y-10);. เปิดใช้งาน: =จริง;

ตัวดำเนินการสองตัวแรกระบุพิกัดเริ่มต้นของวงกลม เจ้าหน้าที่คนที่สามวาดวงกลมที่ตำแหน่งเริ่มต้น และผู้ปฏิบัติงานคนที่สี่เริ่มจับเวลา

ออกอากาศแอปพลิเคชัน เรียกใช้ คลิกที่ปุ่ม คุณจะเห็นภาพวงกลมเคลื่อนผ่านรูปร่างจากซ้ายไปขวา จากนั้นใช้จินตนาการของคุณและแปลงแอปพลิเคชันที่ไม่น่าสนใจนี้ให้กลายเป็นสิ่งที่น่าตื่นเต้นยิ่งขึ้น

ผืนผ้าใบสามารถแสดงไม่เพียงแต่รูปภาพที่สร้างขึ้นโดยทางโปรแกรมเท่านั้น แต่ยังรวมถึงรูปภาพที่จัดเก็บไว้ในไฟล์กราฟิกด้วย เฉพาะผืนผ้าใบเท่านั้นที่ไม่มีวิธีการโหลดรูปภาพจากไฟล์ ดังนั้นจึงต้องโหลดไฟล์ลงในออบเจ็กต์กราฟิกอื่นที่สามารถรับข้อมูลจากไฟล์กราฟิกได้ จากนั้นเขียนรูปภาพจากวัตถุนี้ใหม่ไปยังแคนวาสโดยใช้วิธีแคนวาส วาด. คำอธิบาย:

วาด (X, Y: จำนวนเต็ม; กราฟิก: TGraphic);

นี่คือพารามิเตอร์ เอ็กซ์และ กำหนดพิกัดของมุมซ้ายบนของตำแหน่งภาพบนผืนผ้าใบ กราฟิก- วัตถุที่เก็บข้อมูล วัตถุดังกล่าวสามารถเป็นได้ ตัวอย่างเช่น วัตถุประเภท TBitMapออกแบบมาเพื่อเก็บเมทริกซ์บิต เรามาดูกันว่าทั้งหมดนี้มีลักษณะอย่างไรในทางปฏิบัติ

เปิดแอปพลิเคชันใหม่ ลากส่วนประกอบลงบนแบบฟอร์ม OpenPictureDialogจากหน้าไดอะล็อก (นี่คือส่วนประกอบของไดอะล็อกสำหรับการเปิดไฟล์กราฟิก - ดูหัวข้อ 8.2 ) และปุ่ม ปุ่ม. สถานที่ OpenPictureDialogที่ใดก็ได้ในแบบฟอร์ม เนื่องจากส่วนประกอบนี้ไม่ใช่ภาพ และวางปุ่มที่ด้านล่างของแบบฟอร์ม เพิ่มรหัสต่อไปนี้ลงในตัวจัดการการคลิกปุ่มของคุณ:

ขั้นตอนทีฟอร์ม1. Button1Click(ผู้ส่ง: TObject);

var: TBitMap;

// การเลือกผู้ใช้ ไฟล์กราฟิก

ถ้า OpenPictureDialog1. ดำเนินการ แล้ว

// สร้างวัตถุ BitMap ประเภท TBitMap: =TBitMap. สร้าง;

// ถ่ายโอนรูปภาพไปยังฟอร์มแคนวาส. วาด (10, 10, บิตแมป);

//ทำลายวัตถุ BitMap. ฟรี;

จบ;

รหัสนี้สร้างวัตถุชนิดชั่วคราว TBitMapพร้อมชื่อ บิตแมป. จากนั้นจะเรียกกล่องโต้ตอบสำหรับเปิดไฟล์กราฟิก OpenPictureDialog1และหากผู้ใช้เลือกไฟล์ไว้ ก็จะถูกดาวน์โหลดไปที่ บิตแมปวิธี LoadFromFile. แล้วใช้วิธี วาดรูปภาพที่โหลดจะถูกคัดลอกลงบนผืนผ้าใบในพื้นที่ที่มีพิกัดของมุมซ้ายบน (10,10) หลังจากนี้เป็นวัตถุชั่วคราว บิตแมปถูกทำลาย

เปิดแอปพลิเคชันของคุณและคลิกที่ปุ่ม คุณจะเห็นว่าคุณสามารถอัปโหลดไฟล์กราฟิกประเภทใดก็ได้ บีเอ็มพีและจะปรากฏบนโครงร่างของแบบฟอร์ม (ดูรูปที่ 4.2 ก) คุณสามารถค้นหาไฟล์กราฟิกได้ในไดเรกทอรีรูปภาพ ใน Delphi 5 และ 4 มักจะอยู่ในไดเร็กทอรี \program files\Common Files\Borland Shared. ใน Delphi 3 จะอยู่ในไดเร็กทอรี \program files\Borland\Delphi 3 และใน Delphi 1 - ในไดเร็กทอรี Delphi 16 ในไดเร็กทอรี Images จะมีไดเร็กทอรีย่อย \Images\Splash\16Color\ โดยเฉพาะ ซึ่งเก็บไฟล์ที่โหลดไว้ในตัวอย่างในรูป . 4.2

คุณได้สร้างแอปพลิเคชันที่ดีสำหรับการดูไฟล์กราฟิก แต่ตอนนี้เรามาดูข้อเสียเปรียบที่สำคัญของมันกัน โดยไม่ต้องปิดแอปพลิเคชันของคุณ ให้ไปที่โปรแกรมอื่น เช่น กลับไปที่ Delphi จากนั้นโดยไม่ต้องทำอะไรเลย ให้กลับไปที่แอปพลิเคชันที่กำลังทำงานอยู่ หากหน้าต่างโปรแกรมที่คุณเข้าไปบล็อกหน้าต่างแอปพลิเคชันของคุณโดยสมบูรณ์ เมื่อคุณกลับมาที่หน้าต่างนั้นคุณจะเห็นว่ารูปภาพในหน้าต่างหายไป หากหน้าต่างแอปพลิเคชันของคุณซ้อนทับเพียงบางส่วนเท่านั้น เมื่อคุณกลับมาที่แอปพลิเคชันของคุณ คุณอาจเห็นผลลัพธ์คล้ายกับที่แสดงในรูปที่ 4.2 b

คุณจะเห็นว่าหากหน้าต่างของแอปพลิเคชันอื่นซ้อนทับหน้าต่างแอปพลิเคชันของคุณชั่วคราว รูปภาพที่วาดบนโครงร่างของแบบฟอร์มจะเสีย มาดูกันว่าเราจะกำจัดข้อเสียเปรียบนี้ได้อย่างไร

ถ้าหน้าต่างถูกบังและรูปภาพเสียหาย ระบบปฏิบัติการจะบอกแอปพลิเคชันว่ามีบางอย่างเปลี่ยนแปลงไปในสภาพแวดล้อม และแอปพลิเคชันควรดำเนินการอย่างเหมาะสม ทันทีที่จำเป็นต้องมีการอัปเดตหน้าต่าง เหตุการณ์จะถูกสร้างขึ้น ออนเพ้นท์. ในตัวจัดการเหตุการณ์นี้ (ในกรณีของเราคือเหตุการณ์ในแบบฟอร์ม) คุณต้องวาดภาพใหม่

การวาดใหม่สามารถทำได้ วิธีทางที่แตกต่างขึ้นอยู่กับแอปพลิเคชัน ในตัวอย่างของเรา เป็นไปได้ที่จะประกาศตัวแปร บิตแมป(ผู้ดำเนินการ var BitMap: TBitMap) นอกเหนือจากขั้นตอนข้างต้น เช่น ทำให้ตัวแปรนี้เป็นสากลโดยวางไว้ในส่วนโดยตรง การดำเนินการ. ผู้ดำเนินการ บิตแมป ฟรีสามารถย้ายไปยังตัวจัดการเหตุการณ์แบบฟอร์มได้ ออนทำลายซึ่งเกิดขึ้นเมื่อปิดรับสมัคร จากนั้นในระหว่างดำเนินการแอปพลิเคชันของคุณ คุณจะมีสำเนาของรูปภาพในส่วนประกอบ บิตแมปและคุณเพียงแค่ต้องเข้าสู่ตัวจัดการเหตุการณ์ ออนเพ้นท์แบบฟอร์มมีตัวดำเนินการเพียงตัวเดียวเท่านั้น:

วาด (10, 10, บิตแมป);

ทำเช่นนี้แล้วคุณจะเห็นว่ารูปภาพในแบบฟอร์มไม่ลดลงเนื่องจากการทับซ้อนกันของหน้าต่าง

นอกจากวิธีการพิจารณาแล้ว วาดเค้าร่างก็มีวิธีการคัดลอกเช่นกัน คัดลอกRect:

CopyRect (ปลายทาง: TRect; Canvas: TCanvas; ที่มา: TRect);

วิธีการคัดลอกพารามิเตอร์ที่ระบุ แหล่งที่มาพื้นที่รูปภาพในพื้นที่ต้นทางของรูปภาพ ผ้าใบไปยังพารามิเตอร์ที่ระบุ ปลายทางพื้นที่ของผืนผ้าใบนี้ พิมพ์ ตร, กำหนดลักษณะของพื้นที่สี่เหลี่ยม แหล่งที่มาและ ปลายทางตามที่อธิบายไว้แล้วในส่วน 3.2 .

ตัวอย่างเช่นผู้ดำเนินการ

CopyRect (MyRect2, Bitmap. Canvas, MyRect1);

คัดลอกไปยังโครงร่างแบบฟอร์มในพื้นที่ MyRect2ภาพจากพื้นที่ MyRect1ผ้าใบส่วนประกอบ บิตแมป.

วิธีการคัดลอก คัดลอกRectดำเนินการในโหมดที่ระบุโดยคุณสมบัติ โหมดการคัดลอก. โดยค่าเริ่มต้นคุณสมบัตินี้มีค่า cmSrcCopyซึ่งหมายถึงการแทนที่รูปภาพที่มีอยู่เดิมในพื้นที่นั้น ปลายทางไปยังภาพที่คัดลอก ค่าอื่นๆ ที่เป็นไปได้ โหมดการคัดลอกอนุญาตให้คุณรวมภาพได้ แต่การพิจารณานั้นอยู่นอกเหนือขอบเขตของหนังสือเล่มนี้

เราจะจำกัดตัวเองอยู่เพียงข้อมูลพื้นฐานเกี่ยวกับการแสดงข้อมูลกราฟิกบนผืนผ้าใบ ในส่วนที่ 3.2 มีการจัดเตรียมข้อมูลเกี่ยวกับผลลัพธ์ของข้อความไปยังโครงร่าง โดยทั่วไปโครงร่าง - วัตถุที่ซับซ้อนซึ่งมีคุณสมบัติและวิธีการอีกมากมาย แต่สิ่งนี้จำเป็นต้องมีการอภิปรายเพิ่มเติมนอกเหนือจากขอบเขตของหนังสือเล่มนี้ หนังสือเล่มถัดไปในชุด All About Delphi จะกล่าวถึงปัญหาเหล่านี้โดยละเอียดยิ่งขึ้น

ส่วนประกอบหน้าต่างที่มีคุณสมบัติ ผ้าใบ- ผ้าใบ.

ส่วนประกอบรูปภาพและ PaintBox

ส่วนประกอบ ภาพและ เพนท์บ็อกซ์นำเสนอพื้นผิวที่จำกัดด้วยผืนผ้าใบที่สามารถเขียนภาพได้ ดังที่อธิบายไว้ในส่วน 4.2 . ในกรณีนี้คือส่วนประกอบ เพนท์บ็อกซ์พูดอย่างเคร่งครัดไม่ได้ให้อะไรใหม่เมื่อเทียบกับการวาดแบบฟอร์มบนผืนผ้าใบ การวาดภาพบน เพนท์บ็อกซ์แทนที่จะเป็นแบบฟอร์ม มันไม่มีข้อดี ยกเว้นบางที ความโล่งใจในการจัดเรียงภาพวาดหนึ่งภาพขึ้นไปในบริเวณหน้าต่าง

แต่นอกเหนือจากความสามารถเหล่านี้แล้วส่วนประกอบ ภาพมีคุณสมบัติที่ช่วยให้คุณทำงานด้วยได้ หลากหลายชนิดไฟล์กราฟิก รองรับไฟล์สามประเภท - บิตเมทริกซ์ ไอคอน และเมตาไฟล์ ไฟล์ทั้งสามประเภทจัดเก็บรูปภาพ ความแตกต่างอยู่ที่วิธีการจัดเก็บภายในไฟล์และวิธีการเข้าถึงเท่านั้น บิตเมทริกซ์ (ไฟล์ที่มีนามสกุล . บีเอ็มพี) แสดงสีของแต่ละพิกเซลในภาพ ในกรณีนี้ ข้อมูลจะถูกจัดเก็บในลักษณะที่คอมพิวเตอร์ทุกเครื่องสามารถแสดงภาพที่มีความละเอียดและจำนวนสีที่สอดคล้องกับการกำหนดค่าได้

รูปสัญลักษณ์ (ไฟล์ที่มีนามสกุล . ไอโอ) เป็นเมทริกซ์ขนาดเล็ก มีการใช้กันอย่างแพร่หลายในการกำหนดไอคอนแอปพลิเคชัน ในปุ่มด่วน ในรายการเมนู ในรายการต่างๆ วิธีการจัดเก็บรูปภาพในไอคอนจะคล้ายกับการจัดเก็บข้อมูลในรูปแบบบิตเมทริกซ์ แต่ก็มีความแตกต่างเช่นกัน โดยเฉพาะอย่างยิ่ง ไอคอนไม่สามารถปรับขนาดได้ แต่จะคงขนาดเท่ากับขนาดที่สร้างขึ้น

Metafiles ไม่ได้จัดเก็บลำดับของบิตที่ประกอบเป็นรูปภาพ แต่เป็นข้อมูลเกี่ยวกับวิธีการสร้างรูปภาพ โดยจะจัดเก็บลำดับของคำสั่งการวาดภาพ ซึ่งสามารถทำซ้ำได้เมื่อสร้างภาพขึ้นมาใหม่ ทำให้ไฟล์ดังกล่าวโดยทั่วไปมีขนาดกะทัดรัดกว่าเมทริกซ์บิต

ส่วนประกอบ ภาพช่วยให้คุณสามารถแสดงข้อมูลที่มีอยู่ในไฟล์กราฟิกทุกประเภทที่ระบุ นี่คือความสำเร็จโดยทรัพย์สินของมัน รูปภาพ- ประเภทวัตถุ ทีรูปภาพ.

รูปที่.4.3หน้าต่างแก้ไขรูปภาพ


หากต้องการทำความคุ้นเคยกับคุณสมบัตินี้ ให้เปิดแอปพลิเคชันใหม่แล้วลากส่วนประกอบลงบนแบบฟอร์ม ภาพ. ยืดหรือกำหนดคุณสมบัติของมัน จัดตำแหน่งเท่ากัน อัลไคลเอนท์เพื่อให้ครอบคลุมพื้นที่ไคลเอนต์ทั้งหมดของแบบฟอร์ม คลิกที่ปุ่มที่มีจุดไข่ปลาถัดจากคุณสมบัติ รูปภาพในหน้าต่าง Object Inspector หรือเพียงดับเบิลคลิกที่ ภาพ. หน้าต่าง Picture Editor จะเปิดขึ้นตรงหน้าคุณ (รูปที่ 4.3) ทำให้คุณสามารถโหลดเข้าสู่คุณสมบัติได้ รูปภาพไฟล์กราฟิกบางไฟล์ (ปุ่มโหลด) และยังบันทึกไฟล์ที่เปิดอยู่ภายใต้ชื่อใหม่หรือในไดเร็กทอรีใหม่ คลิกโหลดเพื่อโหลดไฟล์กราฟิก คุณจะเห็นหน้าต่างสำหรับเปิดไฟล์กราฟิกดังแสดงในรูปที่ 4.4 เมื่อคุณเลื่อนเคอร์เซอร์ในรายการไฟล์กราฟิก รูปภาพที่มีอยู่จะแสดงในหน้าต่างด้านขวา และด้านบนคือตัวเลขที่แสดงขนาดของรูปภาพ . คุณสามารถเลือกไฟล์กราฟิกประเภทใดก็ได้ที่คุณต้องการ เราขอเตือนคุณว่าคุณสามารถค้นหาไฟล์กราฟิกที่มาพร้อมกับ Delphi ได้ในไดเร็กทอรีรูปภาพ ใน Delphi 5 และ 4 มักจะอยู่ในไดเร็กทอรี \program files\Common Files\Borland Shared. ใน Delphi 3 จะอยู่ในไดเร็กทอรี \program files\Borland\Delphi 3 และใน Delphi 1 - ในไดเร็กทอรี Delphi 16 เมื่อไฟล์โหลดแล้ว คลิกตกลงในหน้าต่าง Picture Editor และในส่วนประกอบของคุณ ภาพรูปภาพที่คุณเลือกจะปรากฏขึ้น คุณสามารถเปิดแอปพลิเคชันของคุณและชื่นชมมันได้ อย่างไรก็ตาม คุณเห็นภาพแล้วโดยไม่ต้องเปิดแอปพลิเคชันเลย

เมื่อคุณโหลดรูปภาพจากไฟล์ลงในส่วนประกอบระหว่างกระบวนการออกแบบ ภาพไม่เพียงแสดงข้อมูลเท่านั้น แต่ยังบันทึกลงในแอปพลิเคชันด้วย สิ่งนี้ทำให้คุณสามารถส่งมอบแอปพลิเคชันของคุณได้โดยไม่ต้องมีไฟล์กราฟิกแยกต่างหาก อย่างไรก็ตาม ดังที่เราจะได้เห็นในภายหลัง ภาพคุณยังสามารถโหลดไฟล์กราฟิกภายนอกในขณะที่แอปพลิเคชันกำลังทำงานอยู่

กลับไปพิจารณาคุณสมบัติของส่วนประกอบกัน ภาพ.

หากคุณกำหนดคุณสมบัติ ขนาดอัตโนมัติวี จริงแล้วตามด้วยขนาดส่วนประกอบ ภาพจะปรับขนาดของภาพที่วางไว้โดยอัตโนมัติ ถ้าทรัพย์สิน ขนาดอัตโนมัติติดตั้งใน เท็จจากนั้นรูปภาพอาจไม่พอดีกับส่วนประกอบหรือในทางกลับกันพื้นที่ของส่วนประกอบอาจมีขนาดใหญ่กว่าพื้นที่ของรูปภาพมาก

ทรัพย์สินอื่น - ยืดช่วยให้คุณไม่ปรับส่วนประกอบตามขนาดของรูปภาพ แต่ปรับรูปภาพเป็นขนาดของส่วนประกอบ ติดตั้ง ขนาดอัตโนมัติวี เท็จยืดหรือหดขนาดของส่วนประกอบ ภาพและติดตั้ง ยืดวี จริง. คุณจะเห็นว่าการวาดภาพจะใช้พื้นที่ทั้งหมดของส่วนประกอบ แต่เนื่องจากไม่น่าจะสามารถกำหนดขนาดได้อย่างสมจริง ภาพสัดส่วนกับขนาดของภาพพอดี ภาพจะบิดเบี้ยว ติดตั้ง ยืดวี จริงอาจสมเหตุสมผลสำหรับบางรูปแบบเท่านั้น แต่ไม่ใช่สำหรับรูปภาพ คุณสมบัติ ยืดไม่ส่งผลต่อภาพไอคอนที่ไม่สามารถปรับขนาดได้

คุณสมบัติ - ศูนย์, ตั้งค่าให้ จริง, จัดกึ่งกลางภาพบนพื้นที่ ภาพหากขนาดส่วนประกอบใหญ่กว่าขนาดรูปภาพ

ลองพิจารณาคุณสมบัติอีกอย่างหนึ่ง - โปร่งใส(ความโปร่งใส) ถ้า โปร่งใสเท่ากับ จริงแล้วภาพก็เข้า ภาพกลายเป็นโปร่งใส ซึ่งสามารถใช้เพื่อวางซ้อนภาพไว้ด้านบนของแต่ละภาพได้ วางองค์ประกอบที่สองลงในแบบฟอร์ม ภาพและโหลดภาพอื่นลงไป เพียงลองถ่ายภาพโครงร่างที่กระจัดกระจาย ตัวอย่างเช่น คุณสามารถถ่ายภาพจากสิ่งที่มักจะวางไว้บนปุ่มได้ เช่น ลูกศร (file.\program files\common files\borland shared\images\buttons\arrow1l.bmp) ย้ายของคุณ ภาพเพื่อให้ซ้อนทับกันและอยู่ในชุดส่วนประกอบด้านบน โปร่งใสเท่ากัน จริง. จะเห็นว่าภาพบนไม่บดบังภาพล่างอีกต่อไป การใช้คุณสมบัตินี้อย่างหนึ่งที่เป็นไปได้คือการซ้อนทับบนจารึกรูปภาพที่ทำในรูปแบบของเมทริกซ์บิต คำจารึกเหล่านี้สามารถทำได้โดยใช้โปรแกรม Image Editor ที่มีอยู่ใน Delphi

โปรดทราบว่าทรัพย์สิน โปร่งใสส่งผลต่อเมทริกซ์บิตเท่านั้น ในกรณีนี้สีของพิกเซลด้านซ้ายล่างของบิตเมทริกซ์จะโปร่งใสตามค่าเริ่มต้น (เช่นแทนที่ด้วยสีของรูปภาพที่อยู่ด้านล่าง)

เรากล่าวถึงการโหลดรูปภาพจากไฟล์ในระหว่างขั้นตอนการออกแบบ แต่ทรัพย์สิน. รูปภาพนอกจากนี้ยังทำให้ง่ายต่อการจัดระเบียบการแลกเปลี่ยนด้วยไฟล์กราฟิกทุกประเภทระหว่างการดำเนินการแอปพลิเคชัน เพื่ออธิบายเทคนิคการแลกเปลี่ยนดังกล่าว เราต้องพิจารณารายละเอียดทรัพย์สินให้มากขึ้นก่อน รูปภาพ.

คุณสมบัตินี้เป็นออบเจ็กต์ ซึ่งจะมีคุณสมบัติย่อยที่ชี้ไปยังออบเจ็กต์กราฟิกที่เก็บไว้ ถ้าเข้า. รูปภาพเมทริกซ์บิตจะถูกจัดเก็บและระบุโดยคุณสมบัติ รูปภาพ. บิตแมป. หากมีการจัดเก็บไอคอนไว้ จะชี้ไปที่ที่พัก รูปภาพ. ไอคอน. เมตาไฟล์ที่เก็บไว้จะถูกระบุโดยคุณสมบัติ รูปภาพ. เมตาไฟล์. สุดท้ายนี้ คุณสมบัติจะระบุออบเจ็กต์กราฟิกทุกประเภท รูปภาพ. กราฟิก.

วัตถุ รูปภาพและคุณสมบัติของมัน บิตแมป, ไอคอน, เมตาไฟล์และ กราฟิกมีวิธีอ่านและเขียนไฟล์ LoadFromFileและ บันทึกไปยังไฟล์:

ขั้นตอนโหลดจากไฟล์( ค่าคงที่ชื่อไฟล์: เชือก);

ขั้นตอนบันทึกไปยังไฟล์( ค่าคงที่ชื่อไฟล์: เชือก);

สำหรับคุณสมบัติ รูปภาพ. บิตแมป, รูปภาพ. ไอคอนและ รูปภาพ. เมตาไฟล์รูปแบบไฟล์จะต้องสอดคล้องกับคลาสอ็อบเจ็กต์: บิตเมทริกซ์, ไอคอน, เมตาไฟล์ เมื่ออ่านไฟล์เข้าไปในคุณสมบัติ รูปภาพ. กราฟิกไฟล์จะต้องอยู่ในรูปแบบ metafile และสำหรับวัตถุนั้นเอง รูปภาพวิธีการอ่านและเขียนจะถูกปรับตามประเภทไฟล์โดยอัตโนมัติ ลองอธิบายเรื่องนี้ด้วยตัวอย่าง

มาสร้างแอปพลิเคชันที่คล้ายกับตัวอย่างการดูไฟล์กราฟิกที่กล่าวถึงในหัวข้อ 4.2 เพื่อความหลากหลาย คุณสามารถควบคุมได้โดยใช้สิ่งอื่นที่ไม่ใช่ปุ่ม ปุ่มและเมนู วางส่วนประกอบบนแบบฟอร์ม ภาพ. ยืดหรือกำหนดคุณสมบัติของมัน จัดตำแหน่งเท่ากัน อัลไคลเอนท์เพื่อให้ครอบคลุมพื้นที่ไคลเอนต์ทั้งหมดของแบบฟอร์ม ลากส่วนประกอบกล่องโต้ตอบการเปิดไฟล์กราฟิกไปยังแบบฟอร์ม OpenPictureDialog(ดูหัวข้อ 8.2 ). วางส่วนประกอบเมนูหลักลงในแบบฟอร์มด้วย เมนูหลัก(ดูหัวข้อ 6.1 ) และตั้งค่าส่วนหนึ่งในนั้น - ไฟล์ ในตัวจัดการสำหรับส่วนนี้ ให้เขียนคำสั่ง

(OpenPictureDialog1.ดำเนินการ) แล้ว. รูปภาพ. LoadFromFile(.FileName);

โอเปอเรเตอร์นี้จะเรียกกล่องโต้ตอบเพื่อเปิดไฟล์กราฟิก (ดูรูปที่ 4.4) และโหลดลงในส่วนประกอบ ภาพที่ 1รูปภาพจากไฟล์ที่ผู้ใช้เลือก (ดูรูปที่ 4.5) นอกจากนี้ ไฟล์สามารถเป็นประเภทใดก็ได้: บิตเมทริกซ์ ไอคอน หรือเมตาไฟล์

รูปที่.4.5รูปภาพในองค์ประกอบ ภาพบิตเมทริกซ์ (a) และรูปสัญลักษณ์ (6)



ในแอปพลิเคชันนี้วิธีการ LoadFromFileนำไปใช้กับ ภาพที่ 1 รูปภาพ. หากจะเปิดเฉพาะไฟล์เมทริกซ์บิตเท่านั้น ตัวดำเนินการโหลดไฟล์จะถูกแทนที่ด้วย

รูปภาพ. บิตแมป LoadFromFile(.FileName);

สำหรับรูปสัญลักษณ์ สามารถใช้ตัวดำเนินการได้ รูปภาพ. ไอคอน. LoadFromFile(.FileName);

และสำหรับ metafiles - ตัวดำเนินการ รูปภาพ. เมตาไฟล์ LoadFromFile(.FileName);

หรือ. รูปภาพ. กราฟิก LoadFromFile(.FileName);

แต่ในทุกกรณีหากรูปแบบไฟล์ไม่ตรงกับที่ต้องการจะเกิดข้อผิดพลาด วิธีการทำงานคล้ายกัน บันทึกไปยังไฟล์กับความแตกต่างที่นำมาใช้กับ รูปภาพหรือเพื่อ รูปภาพ. กราฟิกมันจะบันทึกรูปภาพในรูปแบบใด ๆ ลงในไฟล์ ตัวอย่างเช่น หากคุณขยายแอปพลิเคชันของคุณด้วยกล่องโต้ตอบ บันทึกรูปภาพกล่องโต้ตอบ(ดูหัวข้อ 8.2 ) เข้าสู่ส่วนบันทึกเป็นในเมนูและวางตัวดำเนินการไว้ในตัวจัดการ

บันทึก PictureDialog1. ดำเนินการ แล้ว. รูปภาพ. SaveToFile(SavePictureDialog1. ชื่อไฟล์);

จากนั้นผู้ใช้จะสามารถบันทึกรูปภาพทุกรูปแบบในไฟล์ด้วยชื่อใหม่ได้ เฉพาะในกรณีนี้เท่านั้น เพื่อหลีกเลี่ยงความสับสนในอนาคต นามสกุลของไฟล์ที่บันทึกไว้จะต้องยังคงสอดคล้องกับรูปแบบของภาพที่บันทึกไว้

โปรแกรมจะทำงานเหมือนกันทุกประการกับรูปภาพทุกรูปแบบหากคุณแทนที่ตัวดำเนินการบันทึกด้วย

รูปภาพ. กราฟิก SaveToFile(.FileName);

การใช้ทรัพย์สิน รูปภาพ. กราฟิก. และถ้าคุณรู้รูปแบบของสิ่งที่เก็บไว้ในส่วนประกอบ ภาพรูปภาพแล้วจึงนำวิธีการไปประยุกต์ใช้ บันทึกไปยังไฟล์ถึงคุณสมบัติ รูปภาพ. บิตแมป, รูปภาพ. ไอคอนและ รูปภาพ. เมตาไฟล์.

สำหรับวัตถุที่พิจารณาทั้งหมด รูปภาพ, รูปภาพ. บิตแมป, รูปภาพ. ไอคอนและ รูปภาพ. เมตาไฟล์มีการกำหนดวิธีการกำหนดค่าวัตถุ:

มอบหมาย(ที่มา: TPersistent);

อย่างไรก็ตามสำหรับ บิตแมป, ไอคอนและ เมตาไฟล์คุณสามารถกำหนดค่าของวัตถุที่เป็นเนื้อเดียวกันได้เท่านั้น: ตามลำดับ, เมทริกซ์บิต, ไอคอน, เมตาไฟล์ มีข้อยกเว้นเกิดขึ้นเมื่อพยายามกำหนดค่าให้กับวัตถุที่ต่างกัน EConvertError. วัตถุ รูปภาพ- สากลสามารถกำหนดค่าของวัตถุของคลาสอื่น ๆ ในสามคลาสได้ และความหมาย รูปภาพสามารถกำหนดให้กับวัตถุที่มีประเภทตรงกับประเภทของวัตถุที่เก็บไว้ในนั้นเท่านั้น

วิธี กำหนดยังสามารถใช้เพื่อแลกเปลี่ยนรูปภาพด้วยบัฟเฟอร์คลิปบอร์ด ตัวอย่างเช่นผู้ดำเนินการ

กำหนด (Image1.Picture);

จะบันทึกภาพที่เก็บไว้ในคลิปบอร์ดไปยังคลิปบอร์ด ภาพที่ 1. ตัวดำเนินการที่คล้ายกัน

แอปพลิเคชั่นภาพกราฟิกเดลฟี

ภาพที่ 1 รูปภาพ. กำหนด (คลิปบอร์ด);

อ่านเข้ามา ภาพที่ 1รูปภาพบนคลิปบอร์ด นอกจากนี้ยังสามารถเป็นรูปภาพและข้อความได้อีกด้วย

คุณเพียงแค่ต้องจำไว้เมื่อทำงานกับคลิปบอร์ดเพื่อวางลงในโอเปอเรเตอร์ การใช้งานลิงก์โมดูลของคุณไปยังโมดูล คลิปบอร์ด. Delphi จะไม่แทรกลิงก์นี้โดยอัตโนมัติ

กลับไปสู่คุณสมบัติของส่วนประกอบ ภาพเราสามารถสังเกตข้อเสียเปรียบประการหนึ่งที่มีอยู่ในแอปพลิเคชันทดสอบของเรา ดังแสดงในรูปที่ 4.5 เมื่อโหลดรูปภาพที่แตกต่างกัน ขนาดของหน้าต่างแอปพลิเคชันอาจเล็กเกินไป จากนั้นคุณจะเห็นเพียงบางส่วนของรูปภาพหรือใหญ่เกินไป และ จากนั้นรูปภาพจะถูกวางไว้ที่มุมซ้ายบนของแบบฟอร์มอย่างไม่สวยงามทำให้เหลือพื้นที่ว่างมากมาย ข้อเสียเปรียบนี้สามารถกำจัดได้โดยใช้คุณสมบัติ ความสูง(ความสูง) และ ความกว้าง(ความกว้าง) ส่วนประกอบ ภาพ. พร้อมทรัพย์สิน ขนาดอัตโนมัติติดตั้งใน จริงขนาด ภาพจะถูกตั้งค่าเป็นขนาดเดียวกับภาพที่อัพโหลดโดยอัตโนมัติ และมิติเหล่านี้สามารถใช้เพื่อปรับขนาดแบบฟอร์มให้เหมาะสมได้ ตัวอย่างเช่น รหัสก่อนหน้าสำหรับการโหลดรูปภาพจากไฟล์สามารถแทนที่ได้ดังต่อไปนี้:

OpenPictureDialog1. ดำเนินการ แล้ว

เริ่ม. รูปภาพ. LoadFromFile(.FileName); ความสูงของไคลเอ็นต์: = ภาพที่ 1 ส่วนสูง+10;. บนสุด:=ฟอร์ม1. ลูกค้าRect. สูงสุด

+ (Form1.ClientHeight - Image1.Height) div 2;. ความกว้างของไคลเอ็นต์:=รูปภาพ1 กว้าง+10;. ซ้าย: = แบบฟอร์ม1. ลูกค้าRect. ซ้าย

+ (Form1. ClientWidth - Image1. ความกว้าง) div 2;

จบ;

รหัสนี้กำหนดขนาดของพื้นที่ไคลเอนต์ของแบบฟอร์มให้ใหญ่กว่าขนาดของส่วนประกอบเล็กน้อย ภาพที่ 1ซึ่งจะปรับให้เข้ากับขนาดของรูปภาพด้วยคุณสมบัติ ขนาดอัตโนมัติ. ทำการเปลี่ยนแปลงเหล่านี้กับแอปพลิเคชันของคุณ เรียกใช้งาน และดูแบบฟอร์มที่ปรับให้เข้ากับขนาดของรูปภาพที่อัปโหลดโดยอัตโนมัติ

ส่วนประกอบรูปร่าง

ส่วนประกอบ รูปร่างสามารถจัดประเภทตามเงื่อนไขเป็นวิธีการแสดงข้อมูลกราฟิกได้เท่านั้น เนื่องจากเป็นเพียงการแสดงรูปทรงเรขาคณิตต่างๆ แรเงาอย่างเหมาะสม คุณสมบัติหลักของส่วนประกอบนี้คือ รูปร่าง(แบบฟอร์ม) ซึ่งสามารถรับค่าต่อไปนี้:

ตัวอย่างของแบบฟอร์มเหล่านี้แสดงในรูปที่ 4.7

รูปที่.4.7ตัวอย่างส่วนประกอบ รูปร่าง


คุณสมบัติที่สำคัญอีกประการหนึ่งของส่วนประกอบคือ แปรง(แปรง). คุณสมบัตินี้เป็นวัตถุประเภท ทีบรัชซึ่งมีคุณสมบัติย่อยจำนวนหนึ่งโดยเฉพาะ: สี ( แปรง. สี) และสไตล์ ( แปรง. สไตล์) เติมรูปทรง เติมค่าบางอย่าง สไตล์คุณสามารถดูได้ในรูปที่ 4.7 คุณสมบัติเฉพาะประการที่สามของส่วนประกอบ รูปร่าง - ปากกา(ปากกา) ที่กำหนดลักษณะเส้น ทรัพย์สินนี้ก็เหมือนกับทรัพย์สิน แปรงได้ถูกกล่าวถึงแล้วในหัวข้อ 4.2 . คุณสามารถค้นหาข้อมูลอ้างอิงเกี่ยวกับคุณสมบัติเหล่านี้ได้ในบทที่ 10*

ส่วนประกอบแผนภูมิ

ทีนี้มาดูส่วนประกอบกัน แผนภูมิ. ส่วนประกอบนี้ช่วยให้คุณสร้างแผนภูมิและกราฟต่างๆ ที่ดูน่าประทับใจมาก (รูปที่ 4.8) ส่วนประกอบ แผนภูมิมีคุณสมบัติ วิธีการ เหตุการณ์มากมาย ดังนั้น หากพิจารณาให้ครบแล้วเราก็ต้องอุทิศบทนี้ให้หมด ดังนั้นเราจะจำกัดตัวเองให้พิจารณาเฉพาะลักษณะสำคัญเท่านั้น แผนภูมิ. คุณสามารถค้นหาส่วนที่เหลือได้ในวิธีใช้ในตัวของ Delphi หรือลองใช้โดยการทดลองกับไดอะแกรม

ส่วนประกอบ แผนภูมิเป็นภาชนะใส่วัตถุ ชุดพิมพ์ TChartSeries- ชุดข้อมูลที่มีรูปแบบการแสดงผลที่แตกต่างกัน แต่ละส่วนประกอบอาจมีหลายซีรี่ส์ หากคุณต้องการแสดงกราฟ แต่ละชุดจะสัมพันธ์กับเส้นโค้งหนึ่งเส้นบนกราฟ หากคุณต้องการแสดงแผนภูมิ สำหรับแผนภูมิบางประเภท คุณสามารถวางซ้อนชุดข้อมูลต่างๆ ซ้อนกันได้ สำหรับแผนภูมิอื่นๆ (เช่น แผนภูมิวงกลม) อาจดูน่าเกลียด อย่างไรก็ตาม ในกรณีนี้ คุณสามารถตั้งค่าองค์ประกอบเดียวได้ แผนภูมิข้อมูลเดียวกันหลายชุดพร้อมแผนภูมิประเภทต่างๆ จากนั้น โดยการกำหนดให้หนึ่งในนั้นใช้งานในแต่ละครั้ง คุณสามารถให้ผู้ใช้เลือกประเภทของแผนภูมิที่แสดงข้อมูลที่พวกเขาสนใจได้

วางส่วนประกอบหนึ่งหรือสองชิ้น (ถ้าคุณต้องการทำซ้ำรูปที่ 4.8) แผนภูมิบนแบบฟอร์มและดูคุณสมบัติที่เปิดในตัวตรวจสอบวัตถุ นี่คือคำอธิบายบางส่วนของพวกเขา

กำหนดว่าผู้ใช้สามารถเลื่อนส่วนที่สังเกตของกราฟระหว่างการดำเนินการได้หรือไม่ โดยคลิกปุ่มเมาส์ขวา ค่าที่เป็นไปได้: pmNone - ห้ามเลื่อน, pmHorizontal, pmVertical หรือ pmBoth - อนุญาตให้เลื่อนตามลำดับ เฉพาะในทิศทางแนวนอน ในแนวตั้งเท่านั้น หรือในทั้งสองทิศทาง

อนุญาตให้ผู้ใช้เปลี่ยนขนาดภาพในระหว่างดำเนินการ โดยตัดส่วนของแผนภูมิหรือกราฟออกด้วยเคอร์เซอร์ของเมาส์ (รูปที่ 4.8 b ด้านล่างแสดงช่วงเวลาของการดูส่วนของกราฟ ซึ่งนำเสนอทั้งหมดในรูปที่ 4.8 a)

กำหนดชื่อเรื่องของแผนภูมิ

กำหนดป้ายกำกับสำหรับแผนภูมิ ไม่มีโดยค่าเริ่มต้น ข้อความลายเซ็นถูกกำหนดโดยคุณสมบัติย่อย Text

กำหนดเส้นขอบรอบๆ ไดอะแกรม

คำอธิบายแผนภูมิคือรายการสัญลักษณ์

ขอบซ้าย ขอบขวา ขอบบน ขอบล่าง

ค่าระยะขอบซ้าย ขวา บน และล่าง

แกนล่าง แกนซ้าย แกนขวา

คุณสมบัติเหล่านี้จะกำหนดลักษณะของแกนล่าง ซ้าย และขวา ตามลำดับ การตั้งค่าคุณสมบัติเหล่านี้เหมาะสมสำหรับกราฟและแผนภูมิบางประเภท

ผนังด้านซ้าย ผนังด้านล่าง ผนังด้านหลัง

คุณสมบัติเหล่านี้จะกำหนดลักษณะของขอบด้านซ้าย ด้านล่าง และด้านหลังของพื้นที่แสดงผลสามมิติของกราฟ ตามลำดับ (ดูรูปที่ 4.8 ก กราฟด้านล่าง)

รายการชุดข้อมูลที่แสดงในส่วนประกอบ

เปิดหรือปิดการแสดงแผนภูมิ 3 มิติ

ลักษณะของการแสดงผลสามมิติ

สเกลสามมิติ (สำหรับรูปที่ 4.8 นี่คือความหนาของแผนภาพและความกว้างของแถบกราฟ)


ถัดจากคุณสมบัติหลายรายการใน Object Inspector มีปุ่มที่มีจุดไข่ปลาที่ให้คุณเรียกหน้าใดหน้าหนึ่งของ Chart Editor ซึ่งเป็นหน้าต่างหลายหน้าที่ให้คุณตั้งค่าคุณสมบัติทั้งหมดของแผนภูมิ ตัวแก้ไขไดอะแกรมสามารถเรียกได้ด้วยการดับเบิลคลิกที่ส่วนประกอบ แผนภูมิหรือโดยการคลิกขวาแล้วเลือกคำสั่งแก้ไขแผนภูมิจากเมนูป๊อปอัป

หากคุณต้องการลองทำซ้ำแอปพลิเคชันที่แสดงในรูปที่ 4.8 ให้ดับเบิลคลิกที่ส่วนประกอบด้านบน แผนภูมิ. คุณจะถูกนำไปที่หน้าต่าง Chart Editor (รูปที่ 4.9) ไปยังหน้า Chart ซึ่งมีหลายแท็บ ก่อนอื่น คุณจะสนใจแท็บซีรีส์ที่อยู่ตรงนั้น คลิกที่ปุ่มเพิ่ม - เพิ่มซีรี่ส์ คุณจะถูกนำไปที่หน้าต่าง (รูปที่ 4.10) ซึ่งคุณสามารถเลือกประเภทของแผนภูมิหรือกราฟได้ ในกรณีนี้ ให้เลือก พาย - แผนภูมิวงกลม การใช้แท็บ Titles คุณสามารถตั้งชื่อแผนภูมิได้ แท็บ Legend ช่วยให้คุณสามารถตั้งค่าพารามิเตอร์สำหรับการแสดงคำอธิบายแผนภูมิ (รายการสัญลักษณ์) หรือลบออกจากหน้าจอทั้งหมดได้ แท็บ Panel จะกำหนดลักษณะที่ปรากฏของแผงบน ซึ่งแผนภูมิที่แสดงอยู่ แท็บ 3D เปิดโอกาสให้คุณเปลี่ยนรูปลักษณ์ของแผนภูมิของคุณ เช่น เอียง เลื่อน ความหนา ฯลฯ

เมื่อคุณทำงานใน Chart Editor และได้เลือกประเภทแผนภูมิแล้ว ส่วนประกอบต่างๆ แผนภูมิแบบฟอร์มของคุณจะแสดงลักษณะที่ปรากฏพร้อมกับข้อมูลตามเงื่อนไขที่ป้อนเข้าไป (ดูรูปที่ 4.11)

รูปที่.4.10การเลือกประเภทแผนภูมิในตัวแก้ไขแผนภูมิ


ดังนั้นคุณจึงสามารถเห็นผลของการปรับใช้ตัวเลือกต่าง ๆ ให้กับแอปพลิเคชันของคุณได้ทันทีซึ่งสะดวกมาก

หน้าซีรีส์ซึ่งมีแท็บหลายแท็บเปิดโอกาสให้คุณเลือก ลักษณะเพิ่มเติมการแสดงซีรีส์ โดยเฉพาะอย่างยิ่งสำหรับแผนภูมิวงกลมบนแท็บรูปแบบ จะมีประโยชน์ในการเปิดใช้งานตัวเลือกวงกลมวงกลม ซึ่งจะทำให้แน่ใจได้ว่าส่วนประกอบทุกขนาด แผนภูมิแสดงแผนภูมิเป็นวงกลม บนแท็บเครื่องหมาย ปุ่มของกลุ่มสไตล์จะกำหนดสิ่งที่จะเขียนบนป้ายกำกับที่เกี่ยวข้องกับแต่ละส่วนของแผนภูมิ: ค่า - ค่า เปอร์เซ็นต์ - เปอร์เซ็นต์ ป้ายกำกับ - ชื่อข้อมูล ฯลฯ ในตัวอย่างในรูปที่ 4.8 ปุ่มเปอร์เซ็นต์เปิดใช้งานอยู่ และบนแท็บทั่วไป จะมีการตั้งค่าเทมเพลตเปอร์เซ็นต์เพื่อให้แน่ใจว่าจะแสดงเฉพาะค่าจำนวนเต็มเท่านั้น

คุณสามารถเพิ่มองค์ประกอบนี้ได้ตามต้องการ แผนภูมิชุดข้อมูลอื่นที่เหมือนกันโดยคลิกที่ปุ่ม Clone บนแท็บ Series ของหน้าแผนภูมิ จากนั้นสำหรับชุดข้อมูลใหม่นี้ ให้คลิกปุ่ม Change และเลือกประเภทแผนภูมิอื่น เช่น Bar แน่นอนสอง ประเภทต่างๆไดอะแกรมในภาพเดียวจะดูไม่ดี แต่คุณสามารถปิดตัวบ่งชี้สำหรับซีรี่ส์ใหม่นี้ได้บนแท็บซีรีส์ จากนั้นให้ผู้ใช้เลือกการแสดงแผนภูมิประเภทใดประเภทหนึ่ง (เราจะแสดงวิธีการดำเนินการด้านล่าง)

ออกจากตัวแก้ไขไดอะแกรม เลือกส่วนประกอบด้านล่างในแอปพลิเคชันของคุณ แผนภูมิและทำซ้ำการตั้งค่าคุณสมบัติโดยใช้ Diagram Editor ในกรณีนี้ คุณจะต้องระบุสองชุดถ้าคุณต้องการแสดงเส้นโค้งสองเส้นบนกราฟ และเลือกประเภทแผนภูมิเส้น เนื่องจากเรากำลังพูดถึงกราฟ คุณสามารถใช้แท็บแกนและผนังเพื่อระบุลักษณะพิกัดของแกนและขอบสามมิติของกราฟได้

แค่นั้นแหละสำหรับการออกแบบ รูปร่างการสมัครสิ้นสุดลง สิ่งที่เหลืออยู่คือการเขียนโค้ดที่ระบุข้อมูลที่คุณต้องการแสดง สำหรับการใช้งานทดสอบ ให้ตั้งค่าข้อมูลคงที่ในแผนภูมิวงกลม และฟังก์ชันไซน์และโคไซน์ในกราฟ

หากต้องการตั้งค่าที่แสดง คุณต้องใช้วิธีการแบบอนุกรม ชุด. เรามาเน้นเพียงสามวิธีหลักเท่านั้น

วิธี ชัดเจนล้างชุดข้อมูลที่ป้อนไว้ก่อนหน้านี้

วิธี เพิ่ม:

(Const AValue: Double; Const ALabel: String;: TColor)

ช่วยให้คุณเพิ่มจุดใหม่ลงในไดอะแกรม พารามิเตอร์ ค่าอาวัลสอดคล้องกับมูลค่าเพิ่ม พารามิเตอร์ อลาเบล- ชื่อที่จะแสดงในแผนภาพและในตำนาน Aสี- สี. พารามิเตอร์ อลาเบล- ไม่จำเป็น สามารถตั้งค่าว่างได้: ""

วิธี เพิ่มXY:(Const AXValue, AYValue: Double; ALabel: String; AColor: TColor)

ให้คุณเพิ่มจุดใหม่ให้กับกราฟฟังก์ชัน ตัวเลือก AXValueและ AYValueสอดคล้องกับอาร์กิวเมนต์และฟังก์ชัน ตัวเลือก อลาเบลและ Aสีเช่นเดียวกับในวิธีการ เพิ่ม.

ดังนั้น ขั้นตอนการโหลดข้อมูลในตัวอย่างของเราอาจมีลักษณะดังนี้:

155;=251;=203;=404;

var: คำ;

เริ่มซีรีส์1 ทำ

เริ่ม;(A1, "เวิร์กช็อป 1", clYellow);(A2, "เวิร์กช็อป 2", clBlue);(A3, "เวิร์กช็อป 3", clRed);(A4, "เวิร์กช็อป 4", clPurple);

จบ;. ชัดเจน;. ชัดเจน;

สำหรับฉัน: =0 ถึง 100 ทำ

เริ่ม. AddXY (0.02*Pi*i, บาป (0.02*Pi*i), "", clRed); AddXY (0.02*Pi*i, cos (0.02*Pi*i), "", clBlue);

ตัวอย่างเช่น ถ้าคุณมีข้อมูลที่แสดงในแผนภูมิ จะมีสองชุดข้อมูล ซีรีส์1และ ซีรีส์4ประเภทต่างๆ - พายและ บาร์จากนั้นคุณสามารถแนะนำขั้นตอนที่เปลี่ยนประเภทของไดอะแกรมตามคำขอของผู้ใช้ ขั้นตอนนี้สามารถเข้าร่วมกิจกรรมได้ เมื่อคลิกปุ่มบางปุ่ม คำสั่งเมนู หรือเพียงแค่ประมวลผลการคลิกบนส่วนประกอบ แผนภูมิ. เพื่อโหลดข้อมูลเข้า ซีรีส์4และทำให้มองไม่เห็นแผนภาพนี้ในครั้งแรก คุณสามารถแทรกตัวดำเนินการที่ส่วนท้ายของขั้นตอนที่กำหนดไว้ก่อนหน้านี้ได้

มอบหมาย (ชุดที่ 1); ใช้งานอยู่: =เท็จ;

ตัวดำเนินการตัวแรกจะเขียนข้อมูลที่วางใหม่ ซีรีส์1, ในซีรีส์ ซีรีส์4. และตัวดำเนินการตัวที่สองทำให้มองไม่เห็นซีรีส์นี้ ซีรีส์4. การเปลี่ยนประเภทไดอะแกรมนั้นดำเนินการตามขั้นตอน

ใช้งานอยู่: = ไม่ซีรีส์1. คล่องแคล่ว;. ใช้งานอยู่: = ไม่ซีรีส์4. คล่องแคล่ว;

ในรูปที่ 4.8 b คุณสามารถดูผลลัพธ์ของการที่ผู้ใช้สลับไปยังมุมมองไดอะแกรมอื่น

งานห้องปฏิบัติการ

เรื่อง: « กราฟิกในเดลฟี– การก่อสร้างที่ง่ายที่สุด
รูปทรงเรขาคณิต"

ข้อมูลโดยย่อจากทฤษฎี

Delphi ให้นักพัฒนามีวิธีในการแสดงกราฟิกสามวิธี:

    การวางแผนในขณะที่โปรแกรมกำลังทำงาน

    การใช้กราฟิกที่สร้างไว้ล่วงหน้า

    การสร้างภาพโดยใช้ส่วนประกอบกราฟิก

ในการสร้างกราฟ คลาสพิเศษได้ถูกสร้างขึ้นซึ่งมีเครื่องมือและวิธีการในการวาดภาพ: เครื่องมือมีการอธิบายไว้ในสามคลาส - Tfont, Tpen, Tbrush; พื้นที่การวาดและวิธีการจัดทำโดยคลาส Tcanvas

ระดับทีฟอนต์– ระบุลักษณะของแบบอักษรที่ใช้แสดงข้อความบนผืนผ้าใบ คุณสมบัติของคลาสอธิบายไว้ในส่วน “คุณสมบัติพื้นฐานสำหรับส่วนประกอบส่วนใหญ่”

ระดับทีเพน– ระบุลักษณะของปากกา (ดินสอ) ที่ใช้วาดเส้น

คุณสมบัติระดับ ทีเพน:

สี:Tcolor – สีของเส้น (ค่าเริ่มต้น – สีดำ)

ความกว้าง:integer – ความหนาของเส้นเป็นพิกเซล;

สไตล์ = (psSolid, psDash, psDot, psdashDot, psClear) – กำหนดรูปแบบของเส้น (ทึบ, ประ, ประ, ประประ, มองไม่เห็น)

ระดับแปรง– กำหนดคุณสมบัติของแปรงที่ใช้ลงสีพื้นผิวของภาพ

คุณสมบัติระดับ แปรง:

สี:Tcolor – สีแปรง (ค่าเริ่มต้น – สีขาว)

สไตล์– รูปแบบแปรงสามารถรับค่าต่อไปนี้:

BsSolid – สีทึบ

BsClear – ขาดการแรเงา

บีแนวตั้ง – เส้นแนวตั้ง

BsBdiagonal – เส้นทแยงมุมขวา

BsDiagCross – เซลล์เฉียง

Bsแนวนอน – เส้นแนวนอน

BsFdiagonal – เส้นทแยงมุมซ้าย

BsCross – กรง

ระดับทีแคนวาส– กำหนดพื้นผิวที่จะวางภาพที่สร้างขึ้น และเครื่องมือที่ใช้สร้างภาพ: แบบอักษร ดินสอ แปรง

เช่น บริเวณที่ทำงาน(canvas, “canvas”) โดยค่าเริ่มต้นจะใช้พื้นที่ไคลเอนต์ทั้งหมดของแบบฟอร์ม (โดยไม่มีส่วนหัว, เมนูหลักและบรรทัดเลื่อนแบบฟอร์ม) แต่คุณสามารถจัดสรรพื้นที่ทำงานเล็กลงภายในแบบฟอร์มโดยใช้ส่วนประกอบ เพนท์บ็อกซ์หรือ ภาพ. ที่มาของพิกัดผืนผ้าใบอยู่ที่มุมซ้ายบนของพื้นที่ทำงาน ความกว้างของพื้นที่ทำงานจะถูกกำหนดโดยที่พัก ความกว้างของไคลเอ็นต์, ความสูง – ทรัพย์สิน ความสูงของไคลเอ็นต์.

คุณสมบัติระดับ ทีแคนวาส:

ผ้าใบ:Tcanvas – กำหนดพื้นที่การวาด

แปรง:Tbrush – แปรงสำหรับทาสีรูปทรงปิด

แบบอักษร:Tfont – แบบอักษรสำหรับแสดงข้อความบนผืนผ้าใบ

ปากกา:Tpen – ดินสอ (ปากกา) สำหรับวาดภาพ

ปากกาโปส:Tpoint – ตำแหน่งปัจจุบันของเคอร์เซอร์ที่มองไม่เห็นบนผืนผ้าใบ

ความคิดเห็น : ประเภท Tpoint – กำหนดดังนี้:

พิมพ์จุด = บันทึก

พิกเซล: Tcolor - ตั้งค่าสีของพิกเซลผืนผ้าใบ X, Y - พิกัดพิกเซล คุณสมบัติ Pixels สะดวกในการใช้สำหรับการลงจุดกราฟโดยใช้จุดของสีที่เลือก

วิธีการหลักของคลาส TCanvas

    ขั้นตอน ย้ายไปยัง(x,y:จำนวนเต็ม); - เลื่อนปากกาโดยไม่ต้องลากเส้นไปยังจุดที่มีพิกัด (x, y)

    ขั้นตอน ไลน์ทู(x,y:จำนวนเต็ม); - ลากเส้นจากจุดปัจจุบันไปยังจุดที่มีพิกัด (x, y)

ตัวอย่าง : วาดเส้นทแยงมุมสีน้ำเงินบนรูปร่างจากมุมซ้ายบนของรูปร่างไปยังมุมขวาล่าง

ปากกา.สี:= clblue;

ย้ายไป(0,0); LineTo(ClientWidth, ความสูงไคลเอ็นต์);

    ขั้นตอน สี่เหลี่ยมผืนผ้า(x1,y1,x2,y2:จำนวนเต็ม); - วาดรูปสี่เหลี่ยมผืนผ้า: x1,y1 – พิกัดของมุมซ้ายบน; x2, y2 คือพิกัดของมุมขวาล่าง

ตัวอย่าง : วาดสี่เหลี่ยมจัตุรัสสีเหลืองโดยมีด้าน 60 พิกเซลอยู่ตรงกลางของรูปร่าง

var Xc,Yc: จำนวนเต็ม; //

Xc:=ClientWidth div 2;

Xy:=ClientHeight div 2;

ผ้าใบ แปรง สี:=clyellow;

ผ้าใบสี่เหลี่ยมผืนผ้า (xc-30, Yc-30, xc + 30, Yc + 30);

    ขั้นตอน วงรี(x1,y1,x2,y2:จำนวนเต็ม); - วาดวงรีที่จารึกไว้ในสี่เหลี่ยมพร้อมพิกัดที่ระบุ

ตัวอย่าง : วาดวงรีที่จารึกไว้ในส่วนประกอบ PaintBox

PaintBox1.Canvas.Pen.Width:=4; // ความกว้างของบรรทัด = 4 พิกเซล

PaintBox1.Canvas.Ellipse (0,0, PaintBox1. ClientWidth, PaintBox1. ClientHeight);

    ขั้นตอน รูปหลายเหลี่ยม(); - วาดรูปหลายเหลี่ยมปิดที่ระบุโดยอาร์เรย์ของพิกัด

ตัวอย่าง : วาดเพชรที่เติมแล้วเชื่อมระหว่างจุดกึ่งกลางของด้านข้างของรูปร่าง

วาร์ Xc,Yc:จำนวนเต็ม; // พิกัดศูนย์กลางของพื้นที่ไคลเอนต์ของแบบฟอร์ม

Xc:=ClientWidth div 2;

Xy:=ClientHeight div 2;

ผ้าใบ แปรง สี:=Rgb(275,140,70); // ส้ม สี การแรเงา

ผ้าใบรูปหลายเหลี่ยม();

จบ;

    ขั้นตอน อาร์ค(x1,y1,x2,y2,x3,y3,x4,y4:จำนวนเต็ม); - แสดงส่วนโค้งของวงรีที่ล้อมรอบด้วยสี่เหลี่ยม (x1, y1, x2, y2) ส่วนโค้งจะแสดงจากจุดที่มีพิกัด (x3,y3) ไปยังจุดที่มีพิกัด (x4,y4) ขัดต่อตามเข็มนาฬิกา

ตัวอย่าง : วาดวงรีโค้งเชื่อมต่อตรงกลางด้านบนของส่วนประกอบ
PaintBox โดยให้ตรงกลางด้านขวา

ขั้นตอน Tform1.Button1Click(Sender:Tobject);

วาร์ X3,y3,x4,y4: จำนวนเต็ม;

ด้วย PaintBox1 ทำได้

ผ้าใบปากกาสี:= clWhite;

ผ้าใบปากกากว้าง:= 3;

Canvas.rectangle (0, 0, PaintBox1.ClientWidth, PaintBox1.ClientHeight);

X3:= ClientWidth div 2;

X4:= ความกว้างของไคลเอ็นต์;

Y4:= ClientHeight div 2;

ผ้าใบปากกาสี:= clMaroon;

Canvas.ARC(0, 0, PaintBox1.ClientWidth, PaintBox1.ClientHeight, x3, y3, x4, y4);

จบ;

    ขั้นตอน คอร์ด(x1,y1,x2,y2,x3,y3,x4,y4:จำนวนเต็ม); - วาดคอร์ด - เส้นตรงที่เชื่อมจุด 2 จุดของวงรี: จุดที่มีพิกัด (x3, y3) กับจุด (x4, y4)

ตัวอย่าง : แทนที่วิธี Chord ในตัวอย่างที่กำหนดสำหรับวิธี ARC และรับผลลัพธ์ต่อไปนี้

    ขั้นตอน พาย(x1,y1,x2,y2,x3,y3,x4,y4:จำนวนเต็ม); - วาดส่วนของวงรีที่เชื่อมต่อศูนย์กลางของวงรีด้วยพิกัด (x3,y3) และ (x4,y4)

ตัวอย่าง : ในตัวอย่างที่ให้ไว้สำหรับวิธี ARC ลองจินตนาการถึงวิธี PIE แล้วได้ผลลัพธ์นี้

    ขั้นตอน ข้อความออก(x,y:จำนวนเต็ม;ข้อความ:สตริง); - ส่งออกสตริงที่ส่งผ่านในพารามิเตอร์ Text เป็นรูปสี่เหลี่ยมผืนผ้า มุมซ้ายบนซึ่งระบุด้วยพิกัด x, y ลักษณะแบบอักษรถูกกำหนดโดยเครื่องมือแบบอักษร

ตัวอย่าง : เขียนชื่อกราฟที่พล็อตไว้ที่ด้านล่างของแบบฟอร์ม

Canvas.Font.Height:=20 ; //ตัวอักษรสูง 20 พิกเซล

Canvas.Font.Color:=clblue;

Canvas.TextOut (10, ClientHeight-24, 'กราฟของฟังก์ชัน SIN (X)');

ส่วนประกอบกราฟิก

Delphi นำเสนอส่วนประกอบสำเร็จรูปจำนวนหนึ่งที่ช่วยให้คุณสามารถปรับปรุงได้ หน้าจอผู้ใช้. ส่วนประกอบเหล่านี้อยู่บนหน้า เพิ่มเติมและ ระบบจานสีส่วนประกอบ

ส่วนประกอบภาพ(ระดับทิเมจ) – สร้างขึ้นเพื่อแสดงภาพกราฟิกที่เก็บไว้ในไฟล์ภายนอกพร้อมนามสกุล:

    Ico(ไอคอน รูปสัญลักษณ์);

    บีเอ็มพี( ภาพแรสเตอร์, บิตแมป);

    Wmf, .emf (เมตาไฟล์);

    JPEG, .jpeg (รูปภาพบีบอัด JPEG)

ขั้นพื้นฐาน คุณสมบัติ :

ปรับขนาดอัตโนมัติ:boolean – เมื่อใด จริงส่วนประกอบจะปรับขนาดตามขนาดของภาพที่โหลด ค่าเริ่มต้นเป็นเท็จ

ยืด:boolean – หากเป็นจริง ค่าที่โหลดจะครอบครองพื้นที่ทั้งหมดของส่วนประกอบ ค่าเริ่มต้นเป็นเท็จ

ผ้าใบ:Tcanvas – ใช้สำหรับวาดภายในส่วนประกอบระหว่างการทำงานของโปรแกรม

รูปภาพ:Tpicture - กำหนดภาพที่วางอยู่ในองค์ประกอบ

ขั้นพื้นฐาน วิธีการระดับ รูปภาพ:

ขั้นตอน LoadFromFile(ชื่อไฟล์:สตริง); - โหลดรูปภาพจากไฟล์ชื่อ Filename ลงในส่วนประกอบ

ขั้นตอน บันทึกไปยังไฟล์(ชื่อไฟล์:สตริง); - บันทึกภาพจากส่วนประกอบไปยังไฟล์ชื่อ Filename

ส่วนประกอบเพนท์บ็อกซ์ - กำหนดพื้นที่วาดรูปสี่เหลี่ยม ทรัพย์สินหลักคือ ผ้าใบเมธอดทั้งหมดของคลาส Tcanvas ใช้ได้ แต่ไม่มีคุณสมบัติอิสระ

ตัวอย่าง : วาดรูปวงรีสีเหลืองที่จารึกไว้ในส่วนประกอบ PaintBox1

ขั้นตอน Tform1Button1Click (ผู้ส่ง: Tobject);

ด้วย PaintBox1.Canvas ทำได้

แปรงสี:=clyellow;

วงรี (0,0, PaintBox1.ClientWidth, PaintBox1.ClientHeight);

จบ;

ส่วนประกอบBitBtnปุ่มแรสเตอร์

ปุ่ม BitBtn ซึ่งแตกต่างจากปุ่มมาตรฐาน นอกจากชื่อเรื่อง (คำบรรยาย) แล้ว ยังมีรูปภาพที่ระบุโดยคุณสมบัติ สัญลักษณ์. มีชุดปุ่ม BitBtn มาตรฐานพร้อมคุณสมบัติที่กำหนดไว้ล่วงหน้า (พร้อมรูปภาพ คำจารึก และวัตถุประสงค์เฉพาะ) - ประเภทของปุ่มมาตรฐานจะถูกเลือกผ่านคุณสมบัติ ใจดี. ชนิด=(bkCustom, bkAbort,bkCancel, bkClose …)

ภารกิจที่ 1

สร้างแอปพลิเคชันที่มี แบบฟอร์มหลักส่วนประกอบรูปภาพสองรายการและปุ่ม 4 ปุ่ม ("โหลดรูปภาพ", "สร้างรูปทรงเรขาคณิต", "เปลี่ยนสี", "ออก") และช่วยให้คุณ:

ก) โหลดรูปภาพกราฟิกที่ผู้ใช้เลือกลงในองค์ประกอบ Image1 เพื่อให้รูปภาพนั้นครอบคลุมพื้นที่ทั้งหมดของส่วนประกอบรูปภาพ

b) ใต้องค์ประกอบ Image1 แสดงข้อความว่า "นี่คือรูปภาพจากไฟล์

(สำหรับการวัดขนาดและตำแหน่งของส่วนประกอบภาพควรมีจารึก 1 อัน
ตั้งอยู่ใต้ส่วนประกอบอย่างเคร่งครัด)

c) วาดรูปเรขาคณิตภายในองค์ประกอบ Image2: ส่วนของวงรีที่เชื่อมต่อตรงกลางขององค์ประกอบภาพกับตรงกลางของด้านล่างและด้านขวาขององค์ประกอบภาพ

(สำหรับการเปลี่ยนแปลงขนาดและตำแหน่งของส่วนประกอบภาพ2 จะต้องสร้างรูปให้ถูกต้อง เช่น ตามข้อกำหนดเกี่ยวกับส่วนประกอบภาพ2)

d) เปลี่ยนสีของเส้นของภาพที่วาดใน Image2 ตามคำขอของผู้ใช้โดยใช้ส่วนประกอบ ColorDialog

ภารกิจที่ 2

สร้างแอปพลิเคชันที่ให้คุณสุ่มวางป้ายกำกับต่างๆ (เช่น คำว่า "ไชโย!") ในองค์ประกอบรูปภาพ หากต้องการดำเนินการนี้ ให้ใช้เครื่องสร้างตัวเลขสุ่มแบบสุ่มและฟังก์ชันสุ่ม

ผู้ใช้ต้องป้อนขนาดขององค์ประกอบรูปภาพ คำที่แสดงในรูปภาพ และจำนวนคำ

ภารกิจที่ 3

สร้างแอปพลิเคชันที่ช่วยให้คุณสามารถเลือกชื่อของรูปทรงเรขาคณิตจากกล่องรายการและวาดรูปร่างที่เลือกในองค์ประกอบรูปภาพ สีของรูปร่างถูกเลือกจากส่วนประกอบ RadioGroup

ภารกิจที่ 4

แบ่งส่วนประกอบ PaintBox1 ออกเป็น 4 ส่วนเท่าๆ กัน ทาสีแต่ละส่วนด้วยสีที่แตกต่างกัน เช่น น้ำเงิน เหลือง เขียว แดง

ถัดจากแต่ละมุมของ PaintBox1 ให้เขียนพิกัดของมุมนั้น (สัมพันธ์กับที่มาของแบบฟอร์มซึ่งมีส่วนประกอบ PaintBox1 ตั้งอยู่)

ภารกิจที่ 5

กับ

เลือกประเภทของรูปร่างที่จะวาดจากองค์ประกอบ Radiogroup1 สีเติมจากองค์ประกอบ Radiogroup2 และวาดรูปร่างที่เลือกในองค์ประกอบรูปภาพ

ภารกิจที่ 6

สร้างแอปพลิเคชันที่อนุญาตให้ผู้ใช้กำหนดขนาดของส่วนประกอบ PaintBox1 (เป็นพิกเซล)

แบ่งส่วนประกอบ PaintBox1 ออกเป็น 2 ส่วนเท่าๆ กัน โดยในแต่ละส่วนให้วาดรูปวงรี โดยเติมสีที่เลือกโดยผู้ใช้ใน ColorDialog

ภารกิจที่ 7

กับ สร้างแอปพลิเคชันที่ช่วยให้คุณ:

เลือกชื่อของรูปทรงเรขาคณิตจากกล่องรายการและวาดรูปร่างที่เลือกในองค์ประกอบรูปภาพ รูปร่างควรเต็มไปด้วยสีที่เลือกโดยผู้ใช้ในส่วนประกอบ ColorDialog หากเลือกใช่ในส่วนประกอบ RadioGroup

ภารกิจที่ 8

สร้างแอปพลิเคชันที่อนุญาตให้ผู้ใช้กำหนดขนาดของส่วนประกอบ PaintBox1 (เป็นพิกเซล)

แบ่งส่วนประกอบ PaintBox1 ออกเป็น 4 ส่วนเท่าๆ กัน โดยในแต่ละส่วนให้วาดรูปทรงเรขาคณิตที่แตกต่างกัน (วงรี รูปสี่เหลี่ยมขนมเปียกปูน สามเหลี่ยม และสี่เหลี่ยมผืนผ้า) ผู้ใช้เลือกสีของแต่ละรูปร่างใน ColorGrid

ภารกิจที่ 9

เลือกชื่อของรูปทรงเรขาคณิตจากกล่องรายการ
รูปร่าง (วงรี สี่เหลี่ยมขนมเปียกปูน สี่เหลี่ยม) และวาด
รูปร่างที่เลือกในองค์ประกอบรูปภาพ ที่ตั้ง
รูปร่างในองค์ประกอบรูปภาพ (ไตรมาสที่ 1 ไตรมาสที่ 2

III หรือ IV Quarter) และสีของภาพจะถูกเลือก
จากส่วนประกอบ RadioGroup

ภารกิจที่ 10

สร้างแอปพลิเคชันที่อนุญาตให้ผู้ใช้กำหนดขนาดของส่วนประกอบ PaintBox1 (เป็นพิกเซล)

โดยที่ขนาดด้านข้างไม่สามารถเป็นข้อความ ไม่สามารถเป็นจำนวนลบ และไม่เกิน ขนาดที่เล็กกว่าแบบฟอร์ม

แบ่งส่วนประกอบ PaintBox1 ออกเป็น 4 ส่วนเท่าๆ กัน ภายในแต่ละส่วนให้วาดรูปทรงเรขาคณิตที่ผู้ใช้เลือกไว้ใน Combobox (วงรี รูปสี่เหลี่ยมขนมเปียกปูน สามเหลี่ยม และสี่เหลี่ยมผืนผ้า) ผู้ใช้เลือกสีของรูปภาพใน ColorBox

ภารกิจที่ 11

สร้างแอปพลิเคชันที่ช่วยให้คุณ:

เลือกตำแหน่งของภาพวาดจากองค์ประกอบ Radiogroup

ในองค์ประกอบรูปภาพของสามเหลี่ยมมุมฉาก ให้ตั้งค่า
สีของเงาหรือสีโครงร่างของรูปภาพ ขึ้นอยู่กับ
เปิดใช้งานปุ่มช่องทำเครื่องหมาย เลือกสีได้ทาง
ส่วนประกอบ ColorGrid

ภารกิจที่ 12

สร้างแอปพลิเคชันที่อนุญาตให้ผู้ใช้กำหนดขนาดของส่วนประกอบ PaintBox1 (เป็นพิกเซล)

โดยที่ขนาดด้านข้างต้องไม่เป็นข้อความ ไม่สามารถเป็นตัวเลขติดลบ และต้องไม่เกินขนาดแบบฟอร์มที่เล็กกว่า

แบ่งส่วนประกอบ PaintBox1 ออกเป็น 2 ส่วนเท่าๆ กัน ภายในส่วนหนึ่งให้วาดรูปทรงเรขาคณิตที่ผู้ใช้เลือกไว้ใน Combobox (วงรี รูปสี่เหลี่ยมขนมเปียกปูน สามเหลี่ยม และสี่เหลี่ยมผืนผ้า) ผู้ใช้เลือกสีของรูปภาพใน ColorBox

ตัวอย่างเช่น คุณสามารถเปลี่ยนสีของแบบฟอร์มได้ดังนี้:

form1.Color:= ColorBox1.Colors;

ภารกิจที่ 13

สร้างแอปพลิเคชันที่ช่วยให้คุณ:

ก) วาดรูปสี่เหลี่ยมตรงกลางของรูปร่าง (ผู้ใช้ป้อนขนาดด้านข้างของสี่เหลี่ยมจัตุรัส) โดยที่ขนาดด้านข้างต้องไม่เป็นข้อความ ไม่สามารถเป็นตัวเลขติดลบ และต้องไม่เกินขนาดแบบฟอร์มที่เล็กกว่า

b) แบ่งสี่เหลี่ยมจัตุรัสออกเป็นหนึ่งหรือสองเส้นทแยงมุม ขึ้นอยู่กับการรวมปุ่มช่องทำเครื่องหมาย และทาสีสามเหลี่ยมผลลัพธ์แต่ละอันด้วยสีที่แตกต่างกัน ผู้ใช้สามารถเลือกสีได้

ภารกิจที่ 14

สร้างแอปพลิเคชันที่อนุญาตให้ผู้ใช้กำหนดขนาดของส่วนประกอบ PaintBox1 (เป็นพิกเซล)

โดยที่ขนาดด้านข้างต้องไม่เป็นข้อความ ไม่สามารถเป็นตัวเลขติดลบ และต้องไม่เกินขนาดแบบฟอร์มที่เล็กกว่า

แบ่งส่วนประกอบ PaintBox1 ออกเป็น 2 ส่วนเท่าๆ กัน โดยด้านหนึ่งวาดรูปสี่เหลี่ยมขนมเปียกปูน และด้านในอีกส่วนให้วาดรูปสามเหลี่ยมใดๆ ผู้ใช้เลือกสีของรูปภาพใน ColorBox

ตัวอย่างเช่น คุณสามารถเปลี่ยนสีของแบบฟอร์มได้ดังนี้:

form1.Color:= ColorBox1.Colors;

ภารกิจที่ 15

สร้างแอปพลิเคชันที่ช่วยให้คุณ:

ก) ตั้งค่าขนาดขององค์ประกอบรูปภาพในแนวนอนและแนวตั้งให้เท่ากันและเท่ากับจำนวนที่ผู้ใช้ป้อนจากแป้นพิมพ์

(โดยมีเงื่อนไขว่าขนาดด้านข้างไม่สามารถเป็นข้อความ, ไม่เป็นจำนวนลบ และต้องไม่เกินขนาดแบบฟอร์มที่เล็กกว่า)

b) แบ่งองค์ประกอบรูปภาพออกเป็น 4 ช่องเท่า ๆ กันโดยมีเส้นสีน้ำเงินสองเส้น

c) ภายในแต่ละช่องผลลัพธ์ ให้วาดวงกลมที่จารึกไว้ (อนุญาตให้ผู้ใช้เลือกสีของวงกลมผ่านกล่องโต้ตอบการเลือกสี)

ภารกิจที่ 16

สร้างแอปพลิเคชันที่อนุญาตให้ผู้ใช้กำหนดขนาดของส่วนประกอบ PaintBox1 (เป็นพิกเซล)

โดยที่ขนาดด้านข้างต้องไม่เป็นข้อความ ไม่สามารถเป็นตัวเลขติดลบ และต้องไม่เกินขนาดแบบฟอร์มที่เล็กกว่า

แบ่งส่วนประกอบ PaintBox1 ด้วย 9 ส่วนที่เท่ากันและกรอกสี่เหลี่ยมตารางหมากรุกผลลัพธ์แต่ละอัน ผู้ใช้เลือกสีเติมใน ColorBox

ตัวอย่างเช่น คุณสามารถเปลี่ยนสีของแบบฟอร์มได้ดังนี้:

form1.Color:= ColorBox1.Colors;

ภารกิจที่ 17

บนแบบฟอร์ม ให้วางองค์ประกอบรูปภาพสองรายการและปุ่มสี่ปุ่ม: สีของเส้น เติมสี ตกลง และออก และองค์ประกอบแก้ไข

เมื่อคุณคลิกปุ่ม OK สี่เหลี่ยมจัตุรัสด้าน X จะถูกวาดใน Image1 และสามเหลี่ยมมุมฉากที่มีขาเท่ากัน ซึ่งแต่ละด้านมีความยาว X จะถูกวาดใน Image2

จุดยอดของรูปสามเหลี่ยมเกิดขึ้นพร้อมกับจุดกำเนิดของภาพที่ 2 จุดยอดด้านหนึ่งของสี่เหลี่ยมจัตุรัสเกิดขึ้นพร้อมกับจุดกำเนิดของภาพที่ 1

ปุ่มตกลงจะใช้งานได้เฉพาะเมื่อคุณเลือกสีของเส้นและสีเติมเพื่อวาดรูปร่างเท่านั้น

X – เลือกแบบสุ่มโดยใช้ฟังก์ชัน Random และค่าของ X ควรแสดงในองค์ประกอบแก้ไข

ภารกิจที่ 18

สร้างแอปพลิเคชันที่อนุญาตให้ผู้ใช้กำหนดขนาดของส่วนประกอบ PaintBox1 (เป็นพิกเซล)

แบ่งส่วนประกอบ PaintBox1 ออกเป็น 4 ส่วนเท่า ๆ กัน ภายในส่วนที่ผู้ใช้เลือกควรสร้างวงกลมที่เต็มขนาดตามขนาดที่ผู้ใช้กำหนด ผู้ใช้เลือกสีเติมใน ColorBox

ตัวอย่างเช่น คุณสามารถเปลี่ยนสีของแบบฟอร์มได้ดังนี้:

form1.Color:= ColorBox1.Colors;


“การแสดงข้อมูลกราฟิกใน Delphi” โครงร่างหัวข้อ: 1.C S pppp ooooo ssss ooooo bbbb yyyy in in in yyyy vvvv ooooo dddd aaaa yy g rrrrr aaaa ffff iii hhhh eee ssss kkkk ooooo yyyy nnnn ffff ooooo rrrrr mmmm ahhh tskst iiiiii iiiiii in สี่ ใน D D D D eeee llll pppp hhhh iiii O O tttt ooo bbbb rrrrr aaaa zhzhzh eee nnnn iiii eee k k k aaaa rrrrr tttt iiii nnnnn ooooo kkkk O O tttt ooooo bbbb rrrrr aaa zhzhzh eee nnnnn iiiiii eee g g y g eee ooooo mmmm eee ttt rrrr iiii hhchh eee ssss คิคิ iiii xxxxx ffff iiii yyyy uuuu rrrrr P Pooooo ssss ttt rrrrr ooooo eee nnnn iiii eee yy g g rrrrr aaaa ffff iiii kkkk ooooo vvvv i i i และ d d d iiiiii aaaa yyyy rrrrr aaaa mmmm mmmm....


1. วิธีการแสดงข้อมูลกราฟิก ใน Delphi มีหลายวิธีในการแสดงข้อมูลกราฟิก: ผลลัพธ์ของภาพที่เตรียมไว้ล่วงหน้า (รูปภาพ, ส่วนประกอบรูปร่าง); P การสร้างกราฟและไดอะแกรม (องค์ประกอบแผนภูมิ ฯลฯ ); เอฟ อิมเมจจิ้ง โดยทางโปรแกรม(วัตถุผ้าใบ)


2.แสดง 2.แสดงรูปภาพ การแสดงรูปภาพโดยใช้ส่วนประกอบ IMAGE ที่เราตรวจสอบใน LLC DDDD DDDD LLC Yiyy และและและ ZZZZ P P P PRRRDDDDDDDDDDDDD IIII XXXX T T T T T T T T T T T T TOTEMMM .... ที่นี่เราจะพิจารณาตัวอย่างของแอนิเมชั่นที่ง่ายที่สุดซึ่งเปลี่ยนรูปภาพที่แสดงในส่วนประกอบรูปภาพเป็นระยะ ๆ . PPPP EDURRRREEEE YYYE TTTT IIII n N N n AAAAAA PP PRRR IIII MMMMEEEE RRRRR ...






3.การแสดงผล 3.การแสดงผลรูปทรงเรขาคณิต และจากส่วนประกอบ Shape ต่างๆ คุณสามารถสร้างภาพวาดง่ายๆ ได้ P ด้วยการเปลี่ยนตำแหน่ง (.Left,.Top) ขนาด (.Width,.Height) และสี (Brush.Color) ของส่วนประกอบรูปร่างในภาพวาดโดยทางโปรแกรม คุณสามารถนำองค์ประกอบของแอนิเมชั่นที่ง่ายที่สุดไปใช้ R R R R aaaa ssssssss mmmm ooooh tttt rrrrrr eee tttt yee p p p p rrrrr iii mmmm eee rrrrr....


4.การก่อสร้าง 4.การสร้างกราฟและไดอะแกรม ไดอะแกรมได้รับการออกแบบมาเพื่อการแสดงอาร์เรย์ข้อมูลตัวเลข การแสดงภาพ และการวิเคราะห์ด้วยภาพมากขึ้น PPPP rrrrr iiii mmmm eee rrrrr.... หากต้องการสร้างแผนภูมิใน Delphi มีหลายองค์ประกอบ หนึ่งในนั้นคือส่วนประกอบแผนภูมิ (ส่วน TeeChart Std)










กราฟและไดอะแกรม ข้อมูลที่จะแสดงมักจะถูกส่งผ่านไปยังแผนภูมิโดยทางโปรแกรม เช่น Series1.Clear; (ซีรีส์ที่ชัดเจน) สำหรับ i:=1 ถึง N do Series1.addxy(i, A[i], clGreen); ค่าแกน X ค่าแกน Y ป้ายแกน X สีข้อมูลบนแผนภูมิ PP aaaa sssssssssss mmmm ooooo tttt rrrrr eee tttt yee p p p p prrrr iiii mmmm eee rrrrr p p p poooo ssss ttt rrrrr ooooo eee nnnn iiiiii yayyy yyyy rrrrr aaaa ffff iii kkkk aaaa f f f f uuuu nnnn kkkk tsstst iiiiii y y y = = = = S S S S iiii nnnn ((((xxxx))))


ถัดไป: งานในห้องปฏิบัติการ ““““ OOOO tttt ooooo bbbb rrrrr aaaa zhzhzh eee nnnn iiii eee k k k k aaaa rrrrr tttt iiii nnnn ooooo kkkk i i i i yyyy eee ooooo mmmm eee tttt rrrrr iiii hchchh eee ssss kkkk iiii xxxx ffff iiii yyyy uuuu rrrrr และและ และ xxxx a a a a nnnn iiii mmmm aaaa tsstst iiii yayayaya """"...งาน: 1) พัฒนาแอปพลิเคชันสำหรับการแสดงแอนิเมชั่นอย่างง่ายโดยการเปลี่ยนรูปภาพที่แสดงในส่วนประกอบรูปภาพเป็นระยะ (จำนวนภาพอย่างน้อยสามภาพ ให้เลือกภาพด้วยตัวเอง)




ถัดไป: งานในห้องปฏิบัติการ ““““ PPPP oooo ssss tttt rrrrr ooooo eee nnnn iiii eee yy g rrrrr aaaa ffff iiii kkkk ooooo vvvv i i i i i d d d iiii aaaa yyyy rrrrr aaaa mmmm mmmm """" ..งาน: 1)M แก้ไขแอปพลิเคชัน จาก งานห้องปฏิบัติการ 9 (แสดงข้อมูลในตาราง) เพิ่มความสามารถในการแสดงข้อมูลบางส่วนจากตารางในฮิสโตแกรมหรือแผนภูมิวงกลม 2) สร้างกราฟของฟังก์ชันที่กำหนด

สไลด์ 2

“การแสดงข้อมูลกราฟิกใน Delphi” โครงร่างหัวข้อ: วิธีการแสดงข้อมูลกราฟิกใน Delphi แสดงรูปภาพ การแสดงรูปทรงเรขาคณิต การสร้างกราฟและไดอะแกรม

สไลด์ 3

1. วิธีการแสดงข้อมูลกราฟิก ใน Delphi มีหลายวิธีในการแสดงข้อมูลกราฟิก: ผลลัพธ์ของภาพที่เตรียมไว้ล่วงหน้า (รูปภาพ, ส่วนประกอบรูปร่าง); การสร้างกราฟและไดอะแกรม (องค์ประกอบแผนภูมิ ฯลฯ ); การสร้างภาพโดยทางโปรแกรม (วัตถุ Canvas)

สไลด์ 4

แสดงรูปภาพ เราได้กล่าวถึงการแสดงรูปภาพโดยใช้ส่วนประกอบรูปภาพในหัวข้อใดหัวข้อหนึ่งก่อนหน้านี้ ที่นี่เราจะดูตัวอย่างการใช้แอนิเมชั่นอย่างง่ายโดยการเปลี่ยนรูปภาพที่แสดงในส่วนประกอบรูปภาพเป็นระยะ ไปที่ตัวอย่าง

สไลด์ 5

การแสดงรูปทรงเรขาคณิต การแสดงรูปทรงเรขาคณิตอย่างง่ายบนแบบฟอร์มนั้นมาจากคอมโพเนนต์รูปร่าง

สไลด์ 6

การแสดงรูปทรงเรขาคณิต คุณสมบัติพื้นฐานของส่วนประกอบรูปร่าง:

สไลด์ 7

การแสดงรูปทรงเรขาคณิต คุณสามารถสร้างการออกแบบที่เรียบง่ายได้จากส่วนประกอบ Shape ต่างๆ ด้วยการเปลี่ยนตำแหน่ง (.Left, .Top), ขนาด (.Width, .Height) และสี (Brush.Color) ของส่วนประกอบรูปร่างในภาพวาดโดยทางโปรแกรม คุณสามารถปรับใช้องค์ประกอบของแอนิเมชั่นที่ง่ายที่สุดได้ ลองพิจารณาตัวอย่าง

สไลด์ 8

การสร้างกราฟและไดอะแกรม ไดอะแกรมได้รับการออกแบบมาเพื่อการแสดงอาร์เรย์ข้อมูลตัวเลข การแสดงภาพ และการวิเคราะห์ด้วยภาพมากขึ้น ตัวอย่าง. มีองค์ประกอบหลายอย่างสำหรับการสร้างแผนภูมิใน Delphi หนึ่งในนั้นคือองค์ประกอบแผนภูมิ (ส่วน TeeChart Std)

สไลด์ 9

การสร้างกราฟและไดอะแกรม มุมมองของส่วนประกอบแผนภูมิหลังจากติดตั้งบนแบบฟอร์ม:

สไลด์ 10

การสร้างกราฟและไดอะแกรม นอกจาก “ตัวตรวจสอบวัตถุ” แล้ว ยังสามารถเข้าถึงคุณสมบัติของส่วนประกอบแผนภูมิได้ด้วยการเปิดกล่องโต้ตอบพิเศษ (ปุ่มขวาบนส่วนประกอบ \ แก้ไขแผนภูมิ...) เพิ่มชุดข้อมูล เปลี่ยนประเภทแผนภูมิ

สไลด์ 11

การสร้างกราฟและไดอะแกรม การเลือกประเภทแผนภูมิ:

สไลด์ 12

การสร้างกราฟและไดอะแกรม การตั้งค่าคุณสมบัติสำหรับแกนพิกัด (แกน):

สไลด์ 13

การสร้างกราฟและไดอะแกรม ข้อมูลที่จะแสดงมักจะถูกส่งผ่านไปยังแผนภูมิโดยทางโปรแกรม เช่น Series1.Clear; (ซีรี่ส์ที่ชัดเจน) สำหรับ i:=1 ถึง N do Series1.addxy(i, A[i], '', clGreen); ค่าแกน X ค่าแกน Y ป้ายแกน X สีของข้อมูลบนแผนภูมิ พิจารณาตัวอย่างการพล็อตฟังก์ชัน y = Sin(x)

สไลด์ 14

ถัดไป: งานห้องปฏิบัติการหมายเลข 13.1 “การแสดงรูปภาพและรูปทรงเรขาคณิต และภาพเคลื่อนไหว” ภารกิจ: 1) พัฒนาแอปพลิเคชันเพื่อใช้แอนิเมชั่นอย่างง่ายโดยการเปลี่ยนรูปภาพที่แสดงในส่วนประกอบรูปภาพเป็นระยะ (จำนวนภาพอย่างน้อยสามภาพ ให้เลือกภาพด้วยตัวเอง)

สไลด์ 15

ภารกิจ: 2) คิดและวาดภาพโดยใช้ส่วนประกอบของรูปร่าง ด้วยการเปลี่ยนตำแหน่ง ขนาด หรือสีของส่วนประกอบรูปร่างในภาพวาดโดยทางโปรแกรม คุณสามารถนำองค์ประกอบของแอนิเมชั่นธรรมดาไปใช้

สไลด์ 16

ถัดไป: งานห้องปฏิบัติการหมายเลข 12.2 “การสร้างกราฟและไดอะแกรม” การมอบหมาย: ปรับเปลี่ยนแอปพลิเคชันจากงานห้องปฏิบัติการหมายเลข 9 (การแสดงข้อมูลในตาราง) เพิ่มความสามารถในการแสดงข้อมูลบางส่วนจากตารางในฮิสโตแกรมหรือแผนภูมิวงกลม 2) สร้างกราฟของฟังก์ชันที่กำหนด

ดูสไลด์ทั้งหมด