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