我正在创建一个简单的聊天客户端和服务器,并且在如何呈现sf::Text方面遇到了一些问题。例如,在聊天历史记录中。当用户输入他们的消息时,旧的消息将被推送。最终消息到达顶部,我只想显示消息中仍在聊天历史记录中的那部分。这就是我迷路的地方。
包含文本的元素有两个可见对象- sf::RectangleShape (文本的背景)和sf::Text。我可以很容易地调整形状的大小,一旦它到达顶部,它就在聊天历史记录之外不可见,但我无法在不扭曲内容的情况下调整文本的大小。改变字符大小显然也不理想。
我想要的是,如果一半的文本在聊天历史之外,水平地将文本切成两半。我的第一个想法是以某种方式屏蔽它,但似乎SFML不支持这一点。
我在标题中提到sf::Texture的原因也是因为我在过去也遇到过同样的问题。我只是找不到一种方法来切断它的一部分,我只能设法扭曲它。
在SFML中这是可能的吗?
发布于 2019-06-21 02:09:03
一种方法是将聊天历史记录绘制到sf::RenderTexture,这是用于屏幕外呈现的工具。
将聊天历史记录绘制到渲染纹理后,可以将该纹理绘制到屏幕上。
因此,如果您将文本一半放在渲染纹理上,另一半放在渲染纹理外面,则只会绘制实际适合渲染纹理的部分。
但要知道,render_texture的构建成本相当高,因此您希望重用它们,而不是一直创建新的are。
https://stackoverflow.com/questions/56690203
复制相似问题