Amaliy ish:
Mavzu yuzasida savol va topshiriqlar:
1. Rasmga ellips segmenti qanday qilib qo‘yiladi?
2. Rasmga ellips sektori qilib qo‘yiladi?
3. Rasmga bir nechta matn satri kiritadigan ilova yarating.
4. Rasmga bir nechta geometrik shakllar kiritadigan ilova yarating.
GRAFIK VA ANIMATSION ILOVALAR.
1. Ranglar palitrasi. Piksellar xossasi yordamida qizil va yashil ranglarni
turli ulushda aralashtiiishdan hosil bo'ladigan 65536 ta rangli piksellarni ekranda
tasvirlaydigan ilova yaratamiz. Ilovaga Image (256x256) va Button obyektlarini
quyidagi rasmda ko'rsatilgandek joylaymiz. Button tugmasini ikki marta bosib,
dastur kodiga quyidagi protsedurani kiritamiz:
procedure TForml.ButtonlClick{Sender: TObject};
var i,j,rang:integer;
begin
for i:=0 to 255 do
for j:=0 to 255 do begin
rang:=RGB(i,j,0);
Imagel.Canvas.Pixels[i,j]:=rang;
end;
end;
Ilovani ishga tushirib, qizil va yashil ranglarning aralashib, rang hosil
bo'lishini ko'rarmiz:
Ilovadagi rang:=RGB(i,j,0); operatorini rang:=RGB(i,0,j); ga almashtirib,
qizil va ko'k ranglarning aralashib pushti rang, rang:=RGB(0,i.j); ga almashtirib,
yashil va ko'k ranglarning aralashib havo rang hosil bo'lishiga amin bo'lamiz:
2. Koptok ilovasi. Timer obyektidan birinchi navbatda aniraatsion harakat
yaratish uchun foydalaniladi. Bu qanday amalga oshirilishini ko'rish uchun yangi
ilova yaratamiz. Unga yetarlicha katta Image obyektini, bittadan Timer, CheckBox
va SpinEdit larni joylaymiz.
Ilova oynasining Image egallagan qismida koptok harakatlansin. Koptok
devorga urilganda orqasiga qaytsin. Uning harakati tezlig SpinEdit dagi qiymat
belgilab bersin va u o'zgarishi bilan koptok tezligi ham o'zgarsin. CheckBox da
bayroqcha o'rnatilgan bo'lsa, koptokning harakatlangandagi izi ham ko'rinib tursin,
aks holda faqat koptokning joriy holati ekranga chiqarilsin. Koptokning holati
sekundiga 20 marta (50 millisekund interval bilan) yangilab turilsin.
CheckBox ning sarlavhasini izi bilan deb o'zgartiramiz, Checked xossasini
rost qilib o'rnatamiz. SpinEdit ning maksimal qiymatini 10 ga teng qilib olamiz.
Timer ning Interval xossasini 50 ga tenglaymiz.
Ilovada koptokning joriy holatini saqlash uchun ikkita: x, y\ koptok
harakatining joriy yo'nalishini saqlash uchun yana ikkita: dx, dy o'zgaruvchilar
kerak bo'ladi. Ulanii tavsiflovchi var x,y,dx,dy:integer; operatorini dastur kodi
oynasida var Forml: TForml; dan keyinga joylaymiz. Bu o'zgaruvchilarga
boshlang'ich qiymatlar berish uchun Forml ning boshqa obyektlardan bo'sh qismini
ikki marta bosamiz. Dastur oynasida paydo bo'lgan TForml.FormCreate
protsedurasiga x:=0;y:=0;dx:=2;dy;=l; operatorlarini kiritamiz.
Timer obyektini ikki marta bosib uning protsedurasini quyidagicha
to'ldiramiz:
procedure TForml.TimerlTimer(Sender: TObject);
var n:integer; begin
n:=SpinEditl.Value; if not CheckBoxl.Checked
then Imagel.Canvas.Rectangle(-3,-3,Imagel.Width+3, Imagel.Height+3); x:=x+dx*n; if
x>Imagel.Width then
begin x:=2*Imagel.Width-x; dx:=-dx;end; if x<0 then begin x:=-x; dx:=-dx;end;
у:=y+dy*n;
if y>Imagel.Height then
begin
у:=2*Imagel.Height-y; dy:=-dy;end; if y<0 then begin y:=-y; dy:=-dy;end; Imagel.Canvas.Ellipse(x-
10,y-10,x+10,y+10); end;
Ikkinchi satrda protsedurada foydalanish uchun yangi n nomli o'zgaruvchi
tavsiflanadi. To'rtinchi satrda bu o'zgaruvchiga SpinEditl da berilgan harakat
tezligi qiymati kiritiladi.
Beshinchi satrda CheckBoxl da bayroqcha o'rnatilganligi tekshiriladi.
0>0>
Dostları ilə paylaş: |