Обрезка частей sf :: Text, sf :: Texture и т.д? - PullRequest
0 голосов
/ 20 июня 2019

Я создаю простой чат-клиент и сервер, и у меня возникают некоторые проблемы с отображением sf :: Text.Например, в истории чата.Когда пользователи вводят свои сообщения, старые сообщения будут отправлены вверх.В конце концов, сообщение попадает в самый верх, и я хочу отобразить только ту часть сообщения, которая все еще находится в истории чата.Вот где я потерялся.

Элемент, содержащий текст, имеет два видимых объекта - sf :: RectangleShape (фон для текста) и sf :: Text.Я могу легко настроить размер фигуры, как только она достигнет вершины, чтобы она не видна за пределами истории чата, но я не могу отрегулировать размер текста без искажения содержимого.Изменение размера символа, очевидно, также не является идеальным.

Мне нужно разрезать текст пополам по горизонтали, если половина текста находится вне истории чата.Моей первой мыслью было как-то замаскировать это, но кажется, что SFML не поддерживает это.

Причина, по которой я упоминаю sf :: Texture в названии, также заключается в том, что у меня была такая же проблема с этим в прошлом.Я просто не мог найти способ отрезать его части, мне только удалось его исказить.

Возможно ли это вообще в SFML?

1 Ответ

0 голосов
/ 20 июня 2019

Один из способов сделать это - нарисовать историю чата в sf :: RenderTexture , который является инструментом, используемым для закадрового рендеринга.

После того, как вы нарисовалиисторию чата с вашей текстурой рендеринга, вы можете нарисовать текстуру на экране.

Так что, если вы поместите текст, который наполовину на текстуру рендеринга, а наполовину снаружи, будет нарисована только та часть, которая действительно умещается там..

Имейте в виду, что render_texture довольно дорого создавать, поэтому вы хотите использовать их повторно, а не создавать новые постоянно.

...