gpt4 book ai didi

delphi - 带 Canvas 的Delphi视觉组件

转载 作者:行者123 更新时间:2023-12-03 07:32:54 24 4
gpt4 key购买 nike

我一直写非视觉的内容。它们的创建非常简单,并且在VCL和FMX下都可以很好地工作。到目前为止一切顺利,但是现在我面临一个问题。

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

procedure drawPreview(area: TCanvas);

此过程必须在某处(例如 TRectangle中)绘制一些东西(形状,线条和颜色)。我在网上看到 TComponent没有绘制功能,因此我应该继承其他内容。我找到了 TWinControl(但这仅用于VCL)和 TCustomControl(也仅用于VCL)。

你能告诉我我应该继承什么来获得 Canvas 吗?我的意思是,我要替换:
TRedistPreview = class(TComponent)
end;

带有:
TRedistPreview = class(TSomeClassThatHasCanvas)
end;

我可以在其中调用 procedure drawPreview(area: TCanvas);并在表面上绘制的地方(例如 TRectangle)。

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

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

我该怎么办?

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

正如我所说的,这是我第一次使用可视化组件进行编写,所以我希望有人向我展示正确的方法!

最佳答案

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

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

但是,请记住,FireMonkey中可视组件的呈现与VCL中的呈现有很大不同。因此,如果您考虑在FMX中重用VCL代码,反之亦然,那么恐怕将不可能。

关于delphi - 带 Canvas 的Delphi视觉组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46409551/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com