Delphining grafik imkoniyatlari


end; // taymer signalini qayta ishlash procedure


Download 0.58 Mb.
bet23/29
Sana09.03.2023
Hajmi0.58 Mb.
#1254496
1   ...   19   20   21   22   23   24   25   26   ...   29
Bog'liq
delphi uzb графика

end;
// taymer signalini qayta ishlash
procedure TForm1.Timer1Timer(Sender: TObject);
begin
// fonni tiklash bilan (buferdan) rasmni o’chiramiz
Forml.image1.canvas.Draw(x,у,Buf);
x:=x+2;
if x>fоrm1.Image1.Width then x:=-W;
// fonning saqlaniluvchi qismini aniqlaymiz
BackRct:=Bounds(x,у,W,H);
// uning nusxasini saqlaymiz
Buf.Canvas.CopyRect(BufRct,Back.Canvas,BackRct);
// rasmni chiqaramiz
Forml.image1.canvas.Draw(x,y,bitmap);
end;
// dastur ishini yakunlash
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
// bitli tasvirni saqlashi uchun ajratilgan xotirani tozalaymiz
Back.Free;
bitmap.Free;
Buf.Free;
end;
end.

10.18-rasm. Samolyot dasturining formasi

bitli tasvir deb hisoblangan fon, samolyot, fonning samolyot rasmi berkitib qo’ygan qismlarini saqlash uchun TbitMap tipli ob’yeklardan foydalaniladi. Bu ob’yektlar FormActivate protsedurasida dinamik e’lon yaratiladi. Shuningdek, ushbu protsedura fon (factory.bmp) va samolyot (aplane.bmp) rasmlarini fayldan yuklaydi hamda samolyot birinchi marta joylashgan fonning qismini saqlaydi. Fonning nusxasini olish CopyRect uslubi yordamida bajariladi.


Fon nusxasini olish CopyRect uslubi yordamida amalga oshiriladi. Ushbu uslub bitli tasvirning bir qismini to'g'ri to'rtburchak shaklida boshqa bitli tasvirga olish imkonini beradi. CopyRect qaysi ob'yekt uchun qo'llanilayotgan bo'lsa bitli tasvir ana shu ob'yektga chiziladi. Uslub parametrlari sifatida quyidagilar beriladi (masalan: Buf.Canvas.CopyRect(BufRect, Back.Canvas, BackRct) ):
1) BufRect: TRect - sirtning qaysi qismiga joylash;
2) Back.Canvas - bitli tasvir olinadigan sirt;
3) BackRct: TRect - sirtning qaysi qismidan olish;
TRect tipi o'z ichiga to'g'ri to'rtburchakli sohaning X1,Y1 va X2,Y2 koordinatlarini oladi. X1,Y1 - yuqori-chap burchak, X2,Y2 - quyi-o'ng burchak koordinatalari. TRect koordinatasini aniqlash Bounds funksiyasi yordamida amalga oshiriladi (masalan: BufRect := Bounds(0, 0, W, H)). BufRect va BackRct larning hajmlari o'zaro teng bo'lishi kerak. Aks holda ko'chirilgan tasvir shaklan buzilishi mumkin. Shuni e'tiborga olish kerakki, dastlab harakatlanishi kerak bo'lgan tasvirning boshlang`ich x nuqtasi ekranning chap qismiga nisbatan manfiy qiymatga ega bo`lishi lozim (x<0). x nuqta 0 nuqtadan tasvirning kengligi barobarida chapda joylashadi (x:=-BitMap.Width). Shuning uchun dastur ishga tushirilganida dastlab samolyot tasviri ko`rinmaydi, yani tasvir ko`rinuvch soxa chegarasidan tashqarida chiziladi. Xar safar OnTimer xodisasi bajarilganida x koordinata qiymati ortib boradi va tasvirning x koordinata qiymati 0 dan katta bo`lgan qismi ko`rina boshlaydi.
Shunday qilib samolyot oynaning chap qismidan uchib chiqayotganga o`xshaydi.

Download 0.58 Mb.

Do'stlaringiz bilan baham:
1   ...   19   20   21   22   23   24   25   26   ...   29




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