有没有办法在 FireMonkey 中的球体组件的表面上写入文本,而不是使用文本创建位图并将文本导入到TextureMaterialSource?
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   回答