我有一个用FMX制作的 DelphiXE4 应用程序。
我想要有平面纹理对象(没有厚度),我可以在屏幕上缩放和移动整个场景。
(提示:想想墙上的图片)
我开始使用 TForm3D 来实现TImage3D
分配了位图的组件。它运作良好!
但是我已经使用该TPlane
组件进行了测试,我可以做同样的事情并获得相同的结果。
问题是:这两个组件有什么区别?TImage3D
TPlane
这将帮助我为我当前和未来的需求选择合适的。
FMX 文档和 wiki 在这里并没有真正的帮助!
我有一个用FMX制作的 DelphiXE4 应用程序。
我想要有平面纹理对象(没有厚度),我可以在屏幕上缩放和移动整个场景。
(提示:想想墙上的图片)
我开始使用 TForm3D 来实现TImage3D
分配了位图的组件。它运作良好!
但是我已经使用该TPlane
组件进行了测试,我可以做同样的事情并获得相同的结果。
问题是:这两个组件有什么区别?TImage3D
TPlane
这将帮助我为我当前和未来的需求选择合适的。
FMX 文档和 wiki 在这里并没有真正的帮助!
考虑这些事情的最好方法是查看继承路径。
TImage3D
派生自TAbstractLayer
,因此它通常可以像 3D 图层一样使用。TAbstractLayer
派生自TControl3D
但也实现IAlignableObject
和IAlignRoot
。
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 控件,在这方面更具可塑性。