☰ Mundarija · Informatika

Delphi da grafika

Darslar 59–60 · 2 ta dars · N. I. Taylaqov (umumiy muharrir), A. B. Axmedov, M. D. Pardayeva, A. A. Abdug‘aniyev, U. M. Mirsanov. Informatika va axborot texnologiyalari, 10-sinf, 1-nashr. «Extremum-Press», Toshkent, 2017
59

Delphi da grafika bilan ishlash

Darslik: 132–137-betlar
MaqsadCanvas (polotno) yordamida Image obyektiga chizadi: Pen va Brush xossalarini, Rectangle, Ellipse, MoveTo, LineTo usullarini, Pixels xossasini va ranglarni (cl nomlari, RGB, $BBGGRR) qo‘llaydi.
Yangi so‘zlar
Canvas · Canvas: the drawing surface of an object such as an ImagePen / Brush · Pen / Brush: the pen draws lines, the brush fills areasRGB · RGB: a function that makes a colour from red, green and blue values 0–255Pixels · Pixels: the colours of single dots of the canvas, given by two coordinates
Tushuntirish

Ko‘p obyektlarda Canvas (polotno) xossasi bor: unda shakllar chiziladi. Chizish uchun oynada Additional yorlig‘idagi Image obyektidan foydalanish qulay, chunki unga chizilgan shakl oyna yopilib-ochilganda yo‘qolmaydi (to‘g‘ridan-to‘g‘ri Form1.Canvas ga chizilgan shakl esa oyna boshqa oyna ostida qolsa o‘chib ketishi mumkin). Koordinatalar polotnoning chap yuqori burchagidan sanaladi: x – o‘ngga, y – pastga. Rectangle(x1, y1, x2, y2) to‘g‘ri to‘rtburchak, Ellipse(x1, y1, x2, y2) esa shu to‘rtburchakka ichki chizilgan ellips chizadi; kvadrat ichiga ellips – aylana bo‘ladi. MoveTo(x, y) qalamni nuqtaga ko‘chiradi, LineTo(x, y) esa joriy nuqtadan berilgan nuqtagacha kesma chizadi. Pen (qalam: Color, Width, Style) chiziqlarni, Brush (cho‘tka: Color, Style) ichki sohani bo‘yaydi. Rang cl nomlari bilan (clRed, clBlue, clYellow) yoki RGB(qizil, yashil, ko‘k) bilan beriladi, har bir qiymat 0 dan 255 gacha, shuning uchun 256·256·256 = 16777216 rang bor. Bitta nuqtani Canvas.Pixels[x, y] := RGB(255, 0, 0); bilan bo‘yash mumkin. Lazarus da RGB o‘rniga RGBToColor(r, g, b) ishlatiladi.

Namunalar
Uy: Image1 (300×200). procedure TForm1.Button1Click(Sender: TObject); ⏎ begin ⏎  Image1.Canvas.Rectangle(40, 80, 140, 160); ⏎  Image1.Canvas.MoveTo(40, 80); ⏎  Image1.Canvas.LineTo(90, 40); ⏎  Image1.Canvas.LineTo(140, 80); ⏎ end; Devor eni 140–40 = 100, bo‘yi 160–80 = 80 piksel; tom cho‘qqisi x = (40+140)/2 = 90 da.
Ellipse(10, 40, 70, 120) ning yarim o‘qlari (70–10)/2 = 30 va (120–40)/2 = 40. Quyosh: Image1.Canvas.Brush.Color := clYellow; Image1.Canvas.Ellipse(220, 20, 260, 60); – 40×40 kvadratdagi aylana. RGB(255, 255, 0) sariq rang, RGB(0, 0, 255) ko‘k, RGB(0, 0, 0) qora, RGB(255, 255, 255) oq.
Sinfda faoliyat

«Uy va quyosh»: juftlik o‘z koordinatalari bilan uy, eshik va quyosh chizadi; devor eni va bo‘yini oldindan hisoblab, rasmdagi o‘lchamlar bilan solishtiradi.

Mashq
1
Canvas koordinatalari qayerdan sanaladi?
2
Rectangle(30, 50, 130, 150) ning eni va bo‘yi?
3
Ellipse(10, 20, 90, 60) ning yarim o‘qlari?
4
Nima uchun rasmni Image ga chizish Form1.Canvas ga chizishdan ishonchliroq?