O‘zbekiston respublikasi oliy va o‘rta maxsus ta’lim vazirligi samarqand davlat universiteti



Yüklə 6,9 Mb.
Pdf görüntüsü
səhifə123/173
tarix30.09.2023
ölçüsü6,9 Mb.
#150593
1   ...   119   120   121   122   123   124   125   126   ...   173
 
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 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.
MoveTo va LineTo usullari. 
Chizma chizishda to‘g‘ri chiziq 
kesmasini chizish ko‘p ishlatiladi. Bu borada Delphi qanday imkoniyat-
larga ega? Canvas ob’yektining 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) 


195 
nuqtalarda bo‘lgan kesma chiziladi va grafik kursor (x3, y3) nuqtaga 
o‘tadi.
Bu usullarning amalda qo‘llanishini Muntazam N burchak diago-
nallari deb nomlangan ilovada ko‘rib chiqamiz. Delphi da yangi ilova 
yaratamiz va unga bittadan Image, SpinEdit va Button ob’yektlarini 
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; 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 radiusi-
ni rasm balandligining yarmiga teng qilib oladi. Ikkinchi operator chi-
ziqlar qizil rangda chizilishini ta’minlaydi. Uchinchi operator chizishdan 


196 
oldin 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: 

Yüklə 6,9 Mb.

Dostları ilə paylaş:
1   ...   119   120   121   122   123   124   125   126   ...   173




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin