Einzelnen Beitrag anzeigen

Popov
(Gast)

n/a Beiträge
 
#1

Probleme mit TBrushRecall

  Alt 4. Apr 2015, 00:59
Angeregt durch einen Beitrag, habe ich in einem meiner Projekte einige Prozeduren verändert und meinen plumpen Code durch den Tipp mit TBrushRecall & Co. ersetzt. Eigentlich klappt das in allen Prozeduren, nur bei einer kommen falsche Ergebnisse raus. Warum?

Beispiel: Brush.Color der Bitmap ist clYellow. Nun will ich einige Rechteck mit einer anderen Farbe füllen. Zuerst wird ein Rechteck weiß gefüllt, dann ein zweites gleich, anschließend mit einer kurzen Verzögerung werden beide grün überzeichnet. Dazu die erste Prozedur. Die funktioniert auch.
Delphi-Quellcode:
var
  BrushStyle: TBrushStyle;
begin
  with Bitmap.Canvas do
  begin
    BrushStyle := Brush.Style;
    Brush.Style := bsSolid;
    Brush.Color := AColor;
    FillRect(GetCellRect(Col, Row));
    Brush.Style := BrushStyle;
  end;
end;
Diese Prozedur sollte eigentlich gleich funktionieren. Tut sie aber nicht. Das erste Rechteck wird noch mit weiß gefüllt, das zweite dann mit gelb (statt weiß), dann werden beide mit gelb überzeichnet (statt grün).

Beide Prozeduren werden mit den jeweiligen Farben aufgerufen, nicht etwa mit Brush.Color. Wieso reagiert die zweite Prozedur nicht auf die Farben?
Delphi-Quellcode:
var
  LBrushRecall : TBrushRecall;
begin
  with Bitmap.Canvas do
  begin
    LBrushRecall := TBrushRecall.Create(Brush);
    try
      Brush.Style := bsSolid;
      Brush.Color := AColor;
      FillRect(GetCellRect(Col, Row));
    finally
      LBrushRecall.Free;
    end;
  end;
end;
  Mit Zitat antworten Zitat