根据帖子SFML Views setCenter vs rotation,我再次来寻求帮助。
这简直荒谬,但它正在成为一场噩梦!
我想要的很简单:将视图移动到全局窗口的左上角并旋转它,但轴应该是0,0 而不是视图的中心,喜欢默认。
问题是“setCenter”移动视图并“移动”改变视图的中心。也就是说,一个取消另一个。
我读了很多,我问过很多,但到目前为止还没有人给我解决方案。
答案 0 :(得分:0)
如果你看一下sf :: View类(https://www.sfml-dev.org/tutorials/2.0/graphics-view.php)的文档:
“不像精灵或形状等可绘制的实体,其位置 由它们的左上角定义(并且可以更改为任何其他角落 观点总是由他们的中心操纵 - 这是 只是更方便。这就是改变功能的原因 视图的位置命名为setCenter,而不是setPosition。“
它声明视图的起源位于其中心。因此,如果您想将视图放在左上角,只需执行以下操作:
view.setCenter(view.getWidth() / 2, view.getHeight() / 2);
如果您想将窗口的角放在视图的中心,请执行以下操作:
view.setCenter(0,0);
现在,如果旋转视图,它始终围绕其中心旋转,因此在旋转视图之前,请适当地定位视图。 如果您有其他问题并且是否有帮助,请告诉我。
以下是否适用于您?
// This should set the view to the upper left corner with a size of 500x300
view.reset(sf::FloatRect(250, 150, 500, 300));
// Now you can rotate the view around its center:
view.setRotation(90);
// Don't forget to apply the view.
window.setView(view);
希望这有帮助。
答案 1 :(得分:0)
幸运的是,我收到了SFML论坛用户的支持,该解决方案位于https://stackoverflow.com/a/50069393/5074998之后。