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.
«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?
Chap yuqori burchakdan
2
Rectangle(30, 50, 130, 150) ning eni va bo‘yi?
100 va 100
3
Ellipse(10, 20, 90, 60) ning yarim o‘qlari?
40 va 20
4
Nima uchun rasmni Image ga chizish Form1.Canvas ga chizishdan ishonchliroq?