我寫了一個派生自TLabel的新自定義組件。該組件將一些自定義繪圖添加到組件,但沒有其他。當組件被繪時,一切正常。但是當需要重繪時(例如在組件上拖動另一個窗口),「標籤部分」工作正常,但我的自定義繪圖未正確更新。我基本上是用覆蓋的Paint方法直接繪製到畫布上,當需要重畫時,我的代碼繪製的畫布部分被繪成黑色。看起來好像沒有調用paint方法。我應該怎樣做才能正確重繪?用Delphi自定義組件重繪問題
的組件是基本上是:
TMyComponent = class(TCustomLabel, IMyInterface)
..
protected
procedure Paint; override;
..
procedure TMyComponent.Paint;
begin
inherited;
MyCustomPaint;
end;
更新,塗料例程:
Position := Point(0,0);
Radius := 15;
FillColor := clBlue;
BorderColor := clBlack;
Canvas.Pen.Color := BorderColor;
Canvas.Pen.Width := 1;
Canvas.Brush.Color := BorderColor;
Canvas.Ellipse(Position.X, Position.Y, Position.X + Radius, Position.Y + Radius);
Canvas.Brush.Color := FillColor;
Canvas.FloodFill(Position.X + Radius div 2,
Position.Y + Radius div 2, BorderColor, fsSurface);
解決:
的問題是(冗餘)使用FloodFill的。如果畫布不完全可見,則填充會導致工件。我刪除了填埋場,現在它可以根據需要運行。
它基本上是一樣的,我只是使用橢圓和填充。我必須嘗試減少組件以查看是否存在某種干擾。 – Harriv 2008-11-20 08:30:03