Написание текста на сфере в FireMonkey

Есть ли способ написать текст на поверхности сферного компонента в FireMonkey, не считая создания растрового изображения с текстом и импорта текста в TextureMaterialSource?

1 ответ

Я не уверен, как вы будете писать прямо на поверхность, так как я не имел дело с внутренностями 3D-стороны Firemonkey. Тем не менее, я могу пойти на полпути с таким решением.

Одним из возможных решений является использование 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 это объект текстуры.

Я кратко написал это, но не смог заставить его работать (возможно потому, что после загрузки текстуры нужно проделать еще больше работы). Это должно дать вам базовое представление о том, где работать.

Другие вопросы по тегам