3

我有一个用FMX制作的 DelphiXE4 应用程序。

我想要有平面纹理对象(没有厚度),我可以在屏幕上缩放和移动整个场景
(提示:想想墙上的图片)

我开始使用 TForm3D 来实现TImage3D分配了位图的组件。它运作良好!
但是我已经使用该TPlane组件进行了测试,我可以做同样的事情并获得相同的结果。

问题是:两个组件有什么区别?TImage3DTPlane
这将帮助我为我当前和未来的需求选择合适的。
FMX 文档和 wiki 在这里并没有真正的帮助!

4

1 回答 1

4

考虑这些事情的最好方法是查看继承路径。

TImage3D派生自TAbstractLayer,因此它通常可以像 3D 图层一样使用。TAbstractLayer派生自TControl3D但也实现IAlignableObjectIAlignRoot

TPlane来自TCustomMesh哪个 来自TShape3D哪个 也 来自TControl3D.

我想简单TPlane地说 a 只是一个特定的 3D 形状 - 我没有仔细阅读 FMX 源代码,但我猜它一定比TImage3D. ATPlane只是一个可以在 3D 空间中操作的平面。

然而, ATImage3D通过IAlignableObject等,可以访问许多内置方法和功能,使其能够作为 3D UI 对象进行交互——将自身与其他对象对齐IAlignableObjects,定义边距、边界和锚点等,定义它如何相对于 other 将自己放置或填充空间IAlignableObjects

使用哪个取决于您在做什么。如果您希望图像成为 3D 场景的一部分,那么TPlane可能最有意义。如果您希望它成为 3D UI 的一部分;也就是说,图像是具有其他控件、用户界面元素等的 3D 空间的一部分,那么TImage3D可能最有意义。

ATImage3D可能无法同时访问某些操作的方法TCustomMesh- TImage 可能不会暴露其网格(即:不能通过 3D 变换等进行一般修改,其中输入必须是 a TCustomMesh),而 aTPlane作为 3D 原语而不是锁定的 UI 控件,在这方面更具可塑性。

于 2013-08-27T23:23:35.610 回答