有没有办法在FireMonkey中的球体组件表面上书写文字,而不是使用文本创建位图,并将文本导入TextureMaterialSource
?
答案 0 :(得分:0)
我不确定你是如何直接写表面的,因为我还没有处理过Firemonkey 3D方面的内部问题。但是,我可以采取这样的解决方案。
一种可能的解决方案是使用MakeScreenshot
函数(返回TBitmap
结果)。例如,在表单中添加TEdit
和TLabel
(或TText
)。使用实时绑定或旧的label1.text := edit1.text
代码,您将能够使用您希望显示的文本设置屏幕截图源。
我假设您的表单上有TSphere
和TTextureMaterialSource
。在表单上添加TButton
,并在OnClick事件中使用类似的内容;
var
Bmp : TBitmap;
mstream : TMemorystream;
begin
mstream := TMemorystream.Create;
bmp := Label1.MakeScreenshot;
bmp.SaveToStream(mstream);
tex.Texture.LoadFromStream(mstream);
mstream.Free;
end;
注意: tex
是纹理对象。
我简单地写了一下但是无法使它工作(大概是因为在加载纹理之后需要做更多的工作)。它应该为您提供一个基本的工作原理。