飞机与TImage3D?

时间:2013-08-27 22:33:26

标签: delphi 3d firemonkey delphi-xe4

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

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

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

问题是:这两个组件之间的区别TImage3D& TPlane
这将帮助我为我的当前和进一步的需求选择合适的一个 FMX文档和wiki在这里没有真正的帮助!

1 个答案:

答案 0 :(得分:4)

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

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

TPlane派生自TCustomMeshTShape3D来自TControl3D

我想简而言之TPlane只是一个特定的3D形状 - 我没有完全通过FMX源代码,但我猜它必须比TImage3D更轻量级。 TPlane只是一个可以在3D空间中操作的平面。

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

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

TImage3D可能无法同时访问TCustomMesh上运行的某些方法 - TImage可能不会公开其网格(即:不能通过以下方式进行修改: 3D转换等,其中输入必须是TCustomMesh),而TPlane是3D原语而不是锁定的UI控件,在这方面会更具延展性。