【发布时间】:2013-03-27 14:20:51
【问题描述】:
有没有办法在 FireMonkey 中的球体组件的表面上写文本,而不是用文本创建位图,并将文本导入到TextureMaterialSource?
【问题讨论】:
标签: delphi text 3d firemonkey geometry-surface
有没有办法在 FireMonkey 中的球体组件的表面上写文本,而不是用文本创建位图,并将文本导入到TextureMaterialSource?
【问题讨论】:
标签: delphi text 3d firemonkey geometry-surface
我不确定你会如何直接写到表面,因为我没有处理 Firemonkey 3D 方面的内部结构。但是,这样的解决方案我可以半途而废。
一种可能的解决方案是使用MakeScreenshot 函数(它返回TBitmap 结果)。例如,将TEdit 和TLabel(或TText)添加到您的表单中。使用 livebindings 或旧的 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 是纹理对象。
我简要地写了下来,但无法让它工作(大概是因为在加载纹理后还有更多工作需要完成)。它应该让您对在哪里工作有一个基本的了解。
【讨论】: