Firemonkey控件不会绘制

时间:2016-05-13 08:31:12

标签: delphi components firemonkey

在尝试绘制控件时,我根本无法弄清楚我做错了什么。

我尝试过使用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;

根据网上的内容,它应该足够了 有什么建议吗?

2 个答案:

答案 0 :(得分:2)

Canvas.Fill.ColorTAlphaColor

更改行

  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。