Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Error bei FloodFill


der organist - So 05.07.09 20:39
Titel: Error bei FloodFill
Hi Leutz,

ich bastele mir gerade einen Zauberwürfel beisammen, auch als Rubik's Cube bekannt. Ich hab ne Bitmap mit weißen Feldern, die sollen dann per FloodFill mit der entsprechenden Farbe ausgefüllt werden.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
function TRubikCube.GetReadyPicture:TBitmap;
var
  k,l,m: Integer;
begin
  m:=0;
  CubePic.LoadFromFile(ExtractFilePath(ParamStr(0))+'original.bmp');
  for k := 0 to 3 - 1 do
    for l := 0 to 9 - 1 do begin


      CubePic.Canvas.FloodFill(PicturePoint[m].X,
                               PicturePoint[m].Y,
                               Cube.Side[k][l],
                               fsBorder);
      inc(m);
    end;
  GetReadyPicture:=CubePic;
end;


Die Funktion soll eben eine Bitmap (siehe Anhang) ausmalen.
-Fehler hab ich markiert.
-PicturePoint ist ein Array[0..26]mit den Punkten, die Delphi zum ausmalen benutzen soll.
-mein Cube hat nen Array[0..5] of Array [0..8] of TColor, mit dem Namen Side.

Hoffe ihr könnte mir da weiter helfen..

Edit:
-CubePic ist eine Bitmap...mit der hab ich aber auch schon zeichnen können (noch nicht ausgemalt), da sollte das Problem nicht liegen.

Moderiert von user profile iconNarses: BMP -> PNG


jaenicke - So 05.07.09 21:22

Setzt du denn Pen irgendwo? Denn dessen Farbe wird als Grenze zum Füllen genommen glaube ich, wenn ich mich recht entsinne.


der organist - So 05.07.09 21:55

das stört ihn gar nicht, ich hab die Farbe des Pens auf Schwarz gesetzt, auch einmal den Fillstyle geändert, aber nichts kommt bei rum.

EDIT: Ich habs gefunden: Die Farbe im FloodFill gibt die Grenzfarbe (bei fsBorder) bzw. die Originalfarbe der Fläche an (eben bei fsSurface). Um die Farbe einzustellen, mit der gefüllt wird, stelle man "Brush" auf die richtige Farbe.