0

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

4

1 回答 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 回答