有没有办法在 FireMonkey 中的球体组件的表面上写入文本,而不是使用文本创建位图并将文本导入到TextureMaterialSource
?
问问题
479 次
1 回答
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
是纹理对象。
我简要地写了下来,但无法让它工作(大概是因为在纹理加载后需要完成更多工作)。它应该让您对在哪里工作有一个基本的了解。
于 2013-04-03T00:06:10.353 回答