在FireMonkey中在球体上书写文本

时间:2013-03-27 14:20:52

标签: delphi text 3d firemonkey geometry-surface

有没有办法在FireMonkey中的球体组件表面上书写文字,而不是使用文本创建位图,并将文本导入TextureMaterialSource

1 个答案:

答案 0 :(得分:0)

我不确定你是如何直接写表面的,因为我还没有处理过Firemonkey 3D方面的内部问题。但是,我可以采取这样的解决方案。

一种可能的解决方案是使用MakeScreenshot函数(返回TBitmap结果)。例如,在表单中添加TEditTLabel(或TText)。使用实时绑定或旧的label1.text := edit1.text代码,您将能够使用您希望显示的文本设置屏幕截图源。

我假设您的表单上有TSphereTTextureMaterialSource。在表单上添加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是纹理对象。

我简单地写了一下但是无法使它工作(大概是因为在加载纹理之后需要做更多的工作)。它应该为您提供一个基本的工作原理。