Lobaratoriya iŞİ №20




Yüklə 21.97 Kb.
tarix29.04.2016
ölçüsü21.97 Kb.
LOBARATORİYA İŞİ №20

Mövzu : Delphi.Qrafika ilə iş

İşin məqsədi : Delphi mühitində qrafiki animasiya texnologiyası ilı tanışlıq

1)Qısa nəzəri məlumat .İşin gedişi:

“Avtomobil hərəkəti” adlı proqram yaratmaq.Proqramın açılışı zamanı forma üzərində 2 yol kəsişməsi təsvir olunmuş və şəkil üzərində sağ və sol istiqamətlərdə hərəkət təsvir olunması.

Sistem menyuda forma başlıq-adı yanında avtomobil şəkilinin təsvir etmək.Bir tərəfli hərəkət illuziyası yaratmaq




(Şəkil 1) Maşın hərəkəti proqramının təsviri.

Proyektin yaranmasını addım –addım nəzərdən keçirək:

1)Kompyuteri qoşun .D:\LERNEN\DELPHİ\LR20 qovluğunu PİCTURES qovluğundan başqa bütün fayllardan təmizləyin (PİCTURES qovluğunda proyektə uyğun və yaradıma zamanı istifadə olunacaq fayllar mövcuddur).

2)İş masasında bütün artıq pəncərələri bağlayın

3)Delphi-ni işə salın


İNTERFEYSİN YARADILMASI

4)Formanın başlıq-ad hissəsindəki “form1” yazısını “Avtomobil hərəkəti” adı ilə əvəz edin.Proyekt və modulun adını uyğun olaraq avtomob.dpr (proyekt) və unit1.pas (modul) teyin edin.

5)Tapşırığa əsasən menyu adının yanındakı şəkili dəyişməzdən öncə bu şəkili nəzərdən keçirib və əgər lazım gələrsə onu proyektimizə əlavə edək.Bunu üçün əsas menyuda Tools=>İmage Editor alt menyusunu seçin.Nəticədə ekranda Delphi-də qrafiki əməliyyat üçün nəzərdə tutulmuş proqram açılacaq (şəkil 2). Bu pəncərə Windows XP –dəki Paint proqramına çox bənzəyir.

Şəkil 2.


İmage Editor proqramında əsas menyuda File=>Open altmenyusunu seçin .Açılmış pəncərədə faylın tipi üçün *.ico (icons) tipini seçin.İndi isə D:\LERNEN\DELPHİ\LR20\PİCTURES\emblem.ico faylını seçin.Pəncərənin iş sahəsi 2 hissəyə bölünəcək .1-ci hissə yüklənmiş şəkil böyüdülmüş,2-ci hissədə isə əvvəlki ölçüdə olaraq təsvir olunacaq.Dəyişiklik edildikdən sonra həmin faylı əvvəlki və ya yeni adla yaddaşda saxlamaq mümkündür.Redaktor pəncərəsini qapadın.Form1 obyektinin xassələri bölməsinə daxil olaraq İcon yazısı üzərində 2 ardıcıl klik vasitəsi ilə hazırlanmış emblem.ico faylını yükləyin.

6)Forma üzərində aşağı sağ küncdə Timer komponentini yerləşdirin (bu komponent komponentlər siyahısında SYSTEM qovluğunda yerləşir).Timer komponentinin xassələrini dəyişməklə İnteqral şkalasına 100 m.san təyin edin.(bu tezliklə avtomobil x oxu istiqamətində hərəkət edəcək)

7)İmage komponentindən istifadə edərək (bu komponent ADDİTİONAL komponentlər yığımında yerləşir).Forma üzərində şəkilin yerləşəcəyi yeri qeyd edin və Picture xassəsi vasitəsi ilə şəkilə ayrılmış hissədə seçilmiş şəkli əlavə edin.Bu şəkil D:\LERNEN\DELPHİ\LR20\PİCTURES\fon.bmp ünvanında yerləşir.Align xassəsini dəyişməklə onu alClient təyin edin (Bu o deməkdir ki,İmage1 faylı formanın tam sahəsini tutacaq).
HADİSƏNİN PROQRAMLAŞDIRILMASI
8)Form1 obyektini aktiv edin.Unit1.pas proqram kodu səhifəsinə yeni dəyişənləri VAR hissəsində ayrılmış boşluğa daxil edin .

VAR


Form1: TForm1;

Fon, Auto, Buf: TBitmap; //fon, avtomobil, bufer

FonRct, AutoRct, BufRct: TRect; //fon ,avtomobil və bufer üçün ayrılmış hissə

x, y: Integer; //avtomodbilin sol yuxarı hissəsinin koordinatları

W, H: Integer; //avtomobil şəklinin eni və uzunluğu

9)Proqramı belə quraq ki,proqram açılışımndan dərhal sonra avtomobil hərəkət etsin,bunun üçün Object İnspectorEventsOnActivate üzərinə ikili klik etməklə uyğun prosedurun operatorlarını daxil edək.


{proqrama seçıilmiş şəkil fayllarını yükləmək:}

Fon.LoadFromFile('D:\LERNEN\DELPHI\LR20\PICTURES\fon.bmp');

Form1.Image1.Canvas.Draw(0,0,Fon); // image1 obyektində şəkillərin təsviri

{ proqrama seçıilmiş şəkil fayllarını yükləmək:}

Auto.LoadFromFile('D:\LERNEN\DELPHI\LR20\PICTURES\auto.bmp');

Auto.Transparent:=True; {şəkilin ağ rəngli hissəsinin rəngsizləşdirilməsi}

Auto.TransparentColor:= Auto.Canvas.Pixels[1,1];

{avtomobilin fon üzərində hərəkəti üçün bufer yaradılması:}

W:= Auto.Width;

H:= Auto.Height;

Buf.Width:=W;

Buf.Height:=H;

Buf.Palette:=Fon.Palette; {rənglərin uyğunlaşması}

Buf.Canvas.CopyMode:=cmSrcCopy;

BufRct:=Bounds(0,0,W,H);

x:=2W;

y:=200;

FonRct:=Bounds(x,y,W,H); {fonun seçilmiş hissəsinin yaddaşda saxlanılması}

Buf.Canvas.CopyRect(BufRct, Fon.Canvas, FonRct); {yaddaşda saxlamaq}

End;PROCEDURE TForm1.FormActivate(Sender: TObject);

Begin

Fon:=TBitmap.Create; //fon

Auto:=TBitmap.Create; //avtomobil şəkili

Buf:=TBitmap.Create; //bufer

10)Animasiya effektinin yaranması üçün obyektərin yerləşdiyi siyahıdan Timer1 obyektini seçin (o obyektlər inspektorunda yerləşib)



(Şəkil 3) Obyektlər inspektoru

Daha sonra Events OnTimer üzərinə iki ardıcıl klik edin.Prosedurdan sonra açılmış pəncərəyə uyğun operatrları daxil edin:

PROCEDURE TForm1.Timer1Timer(Sender: TObject);

Begin

Form1.Image1.Canvas.Draw(x,y,Buf); //



x:=x+2; //avtomobilin vəziyyətini X oxu boyunca 2 dama irəli aparmaq

If x>Form1.Image1.Width then x:= 2W; //əgər avtomobil ekranın tutduğu hissədən kənara çıxdısa

FonRct:=Bounds(x,y,W,H); //yaddaşda saxlanılan hissənin seçilməsi

Buf.Canvas.CopyRect(BufRct, Fon.Canvas, FonRct); //onun kopiyasının yaddaşda saxlamaq

Form1.Image1.Canvas.Draw(x,y,Auto); //avtomobilin yerləşdiyi yeni hissədən çıxarmaq

End;


11)İşin sona çatmasından sonra animasiya üçün ayrılmış yaddaşı boşaltmaq məqsədə uyğun olardı.Bunun üçün Form1 pəncərəsindən Object İnspector Events OnClose seçərək bağlanma anında proqramda baş verəcək prosedur üçün boşluq ayrılacaq.Ayrılmış hissəyə aşağıdakı operatorları daxil edin:

PROCEDURE TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

Begin

Fon.Free;



Auto.Free;

Buf.Free;

End;


İşin görülməsi üçün tapşırıq
1)Kompyuteri qoçaraq D:\LERNEN\DELPHI\LR20 qovluğunun daxilində PİCTURES qovluğundan başqa bütün faylları silin.

2)Bütün pəncərələri qatlayın ,Delphi proqramını işə salın.

3)Yuxarıdakı lobaratoriya işi gedişi zamanı öyrənilən bilgilər vasitəsilə proqrama əlavələr edin.

4)İşləyan proqramı müəllimə nümayiş etdirin.

5)Proqramı LR20.exe adı ilə diskə yazdırın

6)Aşağıdakı suallara cavab verərək işi təhvil verin.


YOXLAMA SUALLAR

1)Forma adını Form1-dən Avtomobil hərəkəti adı ilə necə dəyişilir?

2)Formanın standart başlıq şəkili necə dəyişdirilir?

3)Deplhi daxilindəki İmage Editor hansı tip proqramdır?

4)İmage Editor proqramını necə işə salmaq olar?

5)İmage Editor proqramının pəmcərəsinə emblema.ico faylını necə yükləmək olar?

6)Delphi-də proqramın dayandırılmasını necə etmək olar?

7)Proqram pəncərəsinə şəkil yükləmək üçün nə etmək lazımdır ?

8)Proqramın qoşulmasından dərhal sonra avtomobilin hərəkət etməsi üçün nə etmək lazımdır?

9)Avtomobilin hərəkətə gəlməsinin yalnız hər hansı prosesdurdan sonra baş verməsi üçün nə etmək lazımdır?

10)Prosedur nə üçündür?

Fon.LoadFromFile (‘D:\LERNEN\LR\PICTURES\Fon.bmp’)

11) Prosedur nə üçündür?

Form1.Image.Canvas.Draw (0,0 Fon)?

12) Prosedur nə üçündür?

Form1.Image.Canvas.Draw(x,y,Buf)?

13)Əgər Unit1.pas modulunda AutoTransparent:=true-qiymətini AutoTransparent:=false ilə əvəz etsək nə baş verər?

14)Üzərində digər obyekt olan komponenti necə seçmək olar?

15)Fon.Free proseduru nə üçündür?

16)Auto.Free proseduru nə üçündür?



17)T.Form1.FormActivate (sender : Tobject) prosedurunda y:=200 qiymətini y:=20 ilə əvəz etsək nə baş verər?


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

    Ana səhifə