Delphi dasturlash muhitining grafik imkoniyatlari


bsSolid –sidirg‘a. (bir tekis)


Download 271.28 Kb.
bet3/3
Sana17.06.2023
Hajmi271.28 Kb.
#1546025
1   2   3
Bog'liq
Delphi dasturlash muhitining grafik imkoniyatlari

bsSolid –sidirg‘a. (bir tekis)
bsClear –ko‘rinmas.
bsBDiagonal –yon diagonal bo‘ylab.
bsFDiagonal –asosiy diagonal bo‘ylab.
bsCross –panjarasimon.
bsDiagCross –diagonal bo‘ylab panjara.
bsHorizontal –gorizontal.
bsVertical –vertikal.
Pixels (piksellar) xossasi. Canvasning Pixels xossasi yordamida rasm chiziladigan sohadagi har bir nuqtani boshqarish mumkin. Bu xossada piksellar ikki o‘lchovli massivni tashkil etadi. 50-qatorning 100-ustunida joylashgan pikselga murojaat qilish uchun Pixels[100,50] deb uning ikkita
indeksini ko‘rsatish yetarli. Agar biz bu pikselning rangini qizilga o‘zgartirmoqchi bo‘lsak, Image1.Canvas.Pixels[100,50]:= RGB(255,0,0); operatoridan foydalanamiz.
PC:=Image1.Canvas.Pixels[100,50]; operatori esa pikselning rangini o‘zgaruvchida saqlashga imkon beradi.
4. MoveTo va LineTo usullari. Chizma chizishda to‘g‘ri chizi kesmasini chizish ko‘pishlatiladi. Bu borada Delphi qanday imkoniyatlarga ega? Canvas obyektining MoveTo (... ga o‘t)va LineTo (...gacha chiz) usullari kesma chizish uchun xizmat qiladi. Ularning ikkalasi ham butun qiymatli ikkitadan argumentga ega. Bu argumentlar yordamida rasmdagi nuqtaning koordinatalari ko‘rsatiladi.
Uchlari (x1, y1) va (x2, y2) nuqtalarda bo‘lgan kesmani chizish uchun avval MoveTo(x1, y1) usuli bilan kesmaning birinchi uchiga o‘tiladi va Lineto(x2,y2) usuli bilan ikkinchi uchigacha bo‘lgan kesma chiziladi. Bunda grafik kursor (x2, y2) nuqtaga o‘tadi. Agar yana bir marta Lineto(x3,y3) usuli qo‘llansa, uchlari (x2, y2) va (x3, y3) nuqtalarda bo‘lgan kesma chiziladi va grafik kursor (x3, y3) nuqtaga o‘tadi.
Bu usullarning amalda qo‘llanishini Muntazam N burchak diagonallari deb nomlangan ilovada ko‘rib chiqamiz. Delphi da yangi ilova yaratamiz va unga bittadan Image, SpinEdit va Button obyektlarini joylaymiz.
Buttonning sarlavhasini chiz, SpinEdit sarlavhasini esa N ga o‘zgartiramiz. SpinEditning eng katta qiymati (MaxValue) ni 40, eng kichik qiymati (MinValue) ni 3, joriy qiymati (Value) ni 7 ga teng qilib olamiz. Image ning bo‘yi(Height) va eni (Width) ni 500 ga teng qilib olamiz.
Button tugmasini ikki marta bosib, unga diagnallar degan buyruqni kiritamiz. Bunday buyruq hozircha yo‘q, shuning uchun shu nomdagi protsedurani TForm1.Button1Click protsedurasidan oldin kiritamiz: procedure diagonallar;
var i,j,n,r:integer;

x,y: array [0..40] of integer; begin r:=Form1.Image1.Height div 2; Form1.Image1.Canvas.Pen.Color:=clRed; Form1.Image1.Canvas.Rectangle(-1,-1,2*r+2,2*r+2); n:=form1.SpinEdit1.Value;


for i:=1 to n do begin y[i]:=round(r-r*cos(2*pi/n*i)); x[i]:=round(r+r*sin(2*pi/n*i)); end;

for i:=1 to n-1 do for j:=i+1 to n do begin Form1.Image1.Canvas.MoveTo(x[i],y[i]); Form1.Image1.Canvas.LineTo(x[j],y[j]); end; end;


Bu protsedurada oltita o‘zgaruvchi kiritamiz. i va j o‘zgaruvchilar siklni boshqarish uchun ishlatiladi. N o‘zgaruvchida ko‘pburchakning burchaklari soni, r o‘zgaruvchida muntazam ko‘pburchakka tashqi chizilgan aylana radiusi saqlanadi. x va y massivlarda ko‘pburchak uchlarining koordinatalari saqlanadi.
Protsedura tanasidagi operatorlarni uchta qismga ajratish mumkin. Birinchi qismda to‘rtta operator bo‘lib, ulardan birinchisi aylana radiusini rasm balandligining yarmiga teng qilib oladi. Ikkinchi operator chiziqlar qizil rangda chizilishini ta’minlaydi. Uchinchi ope rasmni tozalab tashlaydi. To‘rtinchi operator ko‘pburchakning nechta burchagi bo‘lishini aniqlaydi.
Ikkinchi qismda faqat bitta sikl operatori bor. Unda ko‘pburchak uchlarining koordinatalari aniqlanadi.
Uchinchi qismda ham bitta ichma-ich joylashgan sikl operatori bo‘lib, u ko‘pburchakning tomonlari va diagonallarini chizadi. Ilovani ishga tushiramiz. Avval muntazam yetti burchakni, so‘ng muntazam 28 burchakni chizamiz. Ular quyidagi rasmda ko‘rsatilgan:

Download 271.28 Kb.

Do'stlaringiz bilan baham:
1   2   3




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling