我有一个sf::RectangleShape inputFieldRect_
和一个sf::Text inputFieldText_
,我希望将文本居中放在矩形上,因为sf :: Text的尺寸会有所不同,因为它的字符串长度不同。 / p>
使用inputFieldText_
设置inputFieldText_.setString(s);
的字符串后(s
是用户输入的std::string
)我正在调整其位置以便&# 39; s仍在inputFieldRect_
的中心。
这是我的代码,但文字左侧太多,底部有点太多,所以没有完全集中:
sf::FloatRect rectBounds = inputFieldRect_.getGlobalBounds();
sf::FloatRect textBounds = inputFieldText_.getGlobalBounds();
inputFieldText_.setPosition(
rectBounds.left + (rectBounds.width / 2) - (textBounds.width / 2),
rectBounds.top + (rectBounds.height / 2) - (textBounds.height / 2)
);
有人可以帮帮我吗?我没有看到这个缺陷。
答案 0 :(得分:1)
如果文本的数量非常小,我建议您查看文本绘图点的位置:通常从文本基线(Y)和逻辑初始X中绘制文本。第一个角色。逻辑,因为这可能比你期望的更进一步。**
如果这没有帮助,调查是否应该使用LocalBounds可能会有用:有时在框架中,差异并不像看起来那么简单。
**这种差异被称为左方轴承(是的,也有“右方轴承”)。请参阅此页面上的备注:http://msdn.microsoft.com/en-us/library/system.windows.media.glyphrundrawing(v=vs.110).aspx