我总是写非视觉组件;他们的创作非常简单,而且在VCL和FMX下他们的工作同样出色。到目前为止这么好,但现在我面临一个问题。带有Canvas的Delphi可视化组件
我用来从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实现。从我的研究中,我发现我可以继承TRectangle
,它位于FMX.Objects
之内,但我不知道这是否是正确的选择。
我该怎么办?另外,如果我需要这个组件在VCL中,我是否必须编写另一个从另一个类继承的组件?
正如我所说,这是我第一次用可视化组件写作,所以我希望有人给我看看正确的方法!
完全可以从TComponent开车。根本没有理由不能实现方法在画布上绘制组件。当然,这种设计可能是错误的。也许你需要一个视觉控制。也许你在问错误的事情。 –
是的,VCL和FMX没有任何相互之间的兼容性 - 而不是写在一起工作的单一控制。这基本上就像试图从一辆半卡车将柴油发动机安装到小型柴油机中。 –
作为一个开始,你可以看一些预先写好的东西,比如我在这个问题中的代码:https://stackoverflow.com/questions/31767346/capturing-signature-very-sketchy-on-touch-screen研究它并实施你自己的事情。 –