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

我想要具有平坦纹理的对象(无厚度),可以在其中缩放和移动屏幕上的整个场景。
(提示:考虑一下墙上的图片)

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

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

最佳答案

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

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

TPlane源自TCustomMesh,而TShape3D也源自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控件,则在这方面更具延展性。

07-26 07:19