Die erste Übung soll sein, ein bestimmtes Feld mittels Mausklick mit einer bestimmten Farbe einzufärben. Die Komponente TImage kennt das Ereignis MouseDown, das mit der Prozedur
procedure TForm1.Image1MouseDown(Sender: TObject; Button:
TMouseButton;
Shift: TShiftState; X, Y: Integer)
behandelt werden kann. Von den übergebenen Parametern interessieren uns vor allem die Koordinaten x und y der Mausposition. Das Wertepaar (x,y) beschreibt das Pixel auf der Komponente TImage1, über dem sich die Spitze des Mauszeigers gerade befindet. Diese Werte müssen aber erst noch in Feld-Koordinaten umgerechnet werden. Das jedes Feld 25 Pixel breit und hoch ist, liefern die Umrechnungen zeile := ( y div 25 )+1 und spalte := (x div 25)+1 die Feldkoordinaten.
Das Umfärben kann man wieder mit der Floodfill-Routine vornehmen:
with Image1.Canvas do begin
Brush.Color := aktuelleFarbe;
FloodFill(spalte*25-12,zeile*25-12,clWhite,fsSurface);
end;
Jetzt muss nur noch die aktuelle Farbe gesetzt werden. Das geschieht dadurch, dass man vor dem Färben auf den entsprechend eingefärbten FarbButton klickt.
|
und hier die abgespeckte Version, mit der man schon mal anfangen kann: memory1.zip |
Aufgaben:
© Dietrich Praclik