Pääteohjaustehtäviä 5 / 7-8.10


1. Liikkuva auto

1.
Kokeile n:\kurssit\winohj\delphi\comps\liikkuva - hakemiston komponenttia ja testiohjelmaa. Laita monta autoa liikkumaan. Laita yksi auto, joka lopettaa ajamisen ensimmäisen kääntymisen jälkeen. (Kopioi hakemisto omaan hakemistoosi).

2. Piirtäminen

1.
Luo uusi sovellus ja talleta se (PaintBoxTestForm.pas ja PainBoxTest.dpr)
2.
Lisää lomakkeelle TPaintBox-komponentti ( System-välilehti) ja laita se vähintään 100x100 kokoiseksi.
3.
Kirjoita komponentille OnPaint-tapahtuma, jossa piirretään viiva paikasta 0,0 paikkaan 50,50 (ks. avustus TCanvas.MoveTo ja TCanvas.LineTo).
4.
Kokeile ohjelmaa.
5.
Muuta piirtämistä siten, että piirrät tikku-ukon (ks. vaikkapa Windows ohjelmointi C-kielellä, 3.5 Piirtäminen )
6.
Kopioi hakemistoosi esim. n:\kurssit\winohj\delphi\comps\liikkuva\hauto.bmp
7.
Kirjoita piirtämisen koodiksi:
	procedure TForm1.PaintBox1Paint(Sender: TObject);
	var c:TCanvas; bmp : TBitMap; // rd,rs:TRect;
	begin
	  c := PaintBox1.Canvas;
	  c.MoveTo(0,0);
	  c.LineTo(50,50);
	  bmp := TBitMap.Create;
	  bmp.LoadFromFile('hauto.bmp');  // Oikeasti tämä pitää tehdä "silmukan" ulkop.
	  c.Draw(50,50,bmp);
	
	//  rd := Rect(50,50,50+bmp.Width,50+bmp.Height);
	//  rs := Rect(0,0,bmp.Width-1,bmp.Height-1);
	//  c.BrushCopy(rd,bmp,rs,bmp.TransparentColor);
	//  c.CopyRect(rd,bmp.Canvas,rs);
	  bmp.Free;
	end;
8.
Kokeile ja kokeile sen jälkeen ottaa suorakaiteeseen ( TRect) liittyvät kommentit pois (joko BrushCopy tai CopyRect).
9.
Koska Paint-metodia kutsutaan useita kertoja, niin mieti miten sama koodi kannattaisi lomakkeella sijoittaa optimaalisemmin (niin, ettei bittikarttaa jatkuvasti luoda, lueta tiedostosta ja tuhota).
10.
Piirrä vielä ellipsi auton kuvan ympärille.

3. Kylix

1.
Jos jää aikaa, kokeile jotakin edellisen tehtävän ohjelmaa Kylixissä.