Написание текста на сфере в 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
это объект текстуры.
Я кратко написал это, но не смог заставить его работать (возможно потому, что после загрузки текстуры нужно проделать еще больше работы). Это должно дать вам базовое представление о том, где работать.