使用Canvas

时间:2017-09-25 16:04:35

标签: delphi firemonkey

我总是写非视觉成分;他们的创作非常简单,他们在VCL和FMX下同样运作良好。到目前为止一切顺利,但现在我遇到了一个问题。

我曾经从TComponent继承,但现在我不能再继续了,因为我的组件TRedistPreview确实需要这样的程序:

procedure drawPreview(area: TCanvas);

此过程必须在某处绘制某些内容(形状,线条和颜色),例如在TRectangle中。我在网上看到TComponent无法绘制,所以我应该继承其他东西。我找到了TWinControl(但这只是VCL)和TCustomControl(仅限VCL)。

你能否告诉我应该继承什么来获得画布?我的意思是,我想替换:

TRedistPreview = class(TComponent)
end;

使用:

TRedistPreview = class(TSomeClassThatHasCanvas)
end;

我可以拨打procedure drawPreview(area: TCanvas);并在表面上绘图(如TRectangle)。

我正在寻找Canvas中层次结构最低的类。

由于这个组件对我在Windows和Android下非常有用,我正在寻找Firemonkey实现。从我的研究中,我看到我可以继承TRectangleFMX.Objects,但我不知道这是否是正确的选择。

我该怎么办?

另外,如果我需要将此组件放在VCL中,是否必须编写另一个继承自另一个类的组件?

正如我所说,这是我第一次使用视觉成分写作,所以我希望有人能以正确的方式向我展示!

1 个答案:

答案 0 :(得分:2)

在VCL中,支持画布的第一个类是TCustomcontrol,它是TWinControl的后代。 http://docwiki.embarcadero.com/Libraries/Seattle/en/Vcl.Controls.TCustomControl

在FMX中,允许绘制例程的基类是TControl。

但请记住,在FireMonkey中渲染可视组件与在VCL中有很大不同。因此,如果您考虑在FMX中重复使用VCL代码,反之亦然,我担心它可能无法实现。