Pääteohjaustehtäviä
5 / 2-3.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)
ja kommentoi
c.Draw.
- 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
ja/tai C#
- 1.
- Jos
jää aikaa, kokeile jotakin edellisen tehtävän ohjelmaa
Kylixissä.
- 2.
- Kokeile
C#:lla autolaskuria.