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