SFML视图:setCenter vs move。这让我疯狂

时间:2018-04-27 02:02:36

标签: c++ sfml

根据帖子SFML Views setCenter vs rotation,我再次来寻求帮助。

这简直荒谬,但它正在成为一场噩梦!

我想要的很简单:将视图移动到全局窗口的左上角并旋转它,但轴应该是0,0 而不是视图的中心,喜欢默认。

问题是“setCenter”移动视图并“移动”改变视图的中心。也就是说,一个取消另一个。

我读了很多,我问过很多,但到目前为止还没有人给我解决方案。

2 个答案:

答案 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之后。