在尝试绘制控件时,我根本无法弄清楚我做错了什么。
我尝试过使用TCanvas.BeginScene()/ TCanvas.EndScene(),尝试用其他方法绘画(例如主窗体OnPaint())。
我试过TControl.InvalidateRect()。
我一无所获。
以下是我在测试应用中的内容:
type
TTestControl = class(TControl)
protected
procedure Paint; override;
end;
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
fTestControl: TTestControl;
end;
procedure TTestControl.Paint;
begin
Canvas.Fill.Color := TColorRec.Blueviolet;
Canvas.FillEllipse(ClipRect, AbsoluteOpacity);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
fTestControl := TTestControl.Create(Self);
fTestControl.Parent := Self;
fTestControl.Align := TAlignLayout.Client;
end;
根据网上的内容,它应该足够了 有什么建议吗?
答案 0 :(得分:2)
Canvas.Fill.Color
是TAlphaColor
。
更改行
Canvas.Fill.Color := TColorRec.Blueviolet;
到
Canvas.Fill.Color := TAlphaColors.Blueviolet;
答案 1 :(得分:0)
你的Paint方法应该是这样的:
procedure TTestControl.Paint;
begin
inherited;
Canvas.BeginScene;
Canvas.Fill.Color := claBlueviolet;
Canvas.FillEllipse(ClipRect, AbsoluteOpacity);
Canvas.EndScene;
end;
我也认为你应该覆盖TControl的DoPaint方法而不是Paint。