我想尝试创建一个FireMonkey可视化组件,而我在网上看到TControl
提供了基本需求。目前我已经完成了以下工作:
TMyTest = class(TControl)
strict private
//code...
protected
procedure Paint; override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
//code...
end;
我已经查看了名为PlotGrid
的FMX组件的源代码,并复制了它的功能。我的类继承自TControl(就像PlotGrid一样),并覆盖了Paint(就像PlotGrid一样)。看看这段代码:
constructor TMyTest.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
SetAcceptsControls(False);
end;
destructor TMyTest.Destroy;
begin
inherited;
end;
procedure TMyTest.Paint;
var
i: integer;
a, b: TPointF;
begin
Canvas.Fill.Color := TAlphaColorRec.White;
Canvas.Stroke.Color := TAlphaColorRec.Black;
Canvas.Stroke.Thickness := 2;
a.X := 0; a.Y := Height/2;
b.X := Width; b.Y := Height/2;
Canvas.DrawLine(a, b, 1);
end;
鉴于这段代码,我期望得到像这样的东西(我已经用画图修改了图像,它不是真实的)
问题在于我得到了这个。 组件很好,因为我可以看到所有的方法和属性,并且它们正常工作。该组件是可用的,但是我无法在设计器中看到它!如果我运行FMX应用程序,我无法看到颜色: 任何想法?我已经在
Paint
事件的开头设置了Opacity := 1;
,但仍然没有任何效果。
(Absolute)Opacity
设置为多少? - Remy LebeauParent
属性?通常在实例化控件时就会设置它。作为一个快速测试,在构造函数中添加Parent := AOwner;
。但不要像这样留下它。Owner 和 parent 不应该硬编码成相同的值。 - Tom Brunberg