SFML 视图 setCenter 与旋转 [英] SFML Views setCenter vs rotation

查看:47
本文介绍了SFML 视图 setCenter 与旋转的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个与原始窗口 (500,300) 相同尺寸的视图

I have a view with same dimensions of original window (500,300)

我应用 view.zoom(2) 将视图保留一半大小.

I apply view.zoom(2) to leave the view at half the size.

现在视图居中.我想将视图移动到原始窗口的左上角.所以我把 view.setCenter(500,300);

Now the view is centered. I want to move the view to the upper left corner of the original window. So I put view.setCenter(500,300);

视图现在正确定位在原始窗口的上角.但现在我想旋转视图,使视图的中心成为自己的左上角,即 (0,0): view.setRotation(5);

The view is now correctly positioned in the upper corner of the original window. But now I want to rotate the view, making the center of the view its own top left corner, ie (0,0): view.setRotation(5);

如您所见,旋转轴的中心应为 0.0,但未遵守.问题是,如果我执行view.setCenter(0,0),整个视图返回到原始窗口的中间.

As you can see, the center of the axis of rotation should be 0.0 but not respected. The problem is that if I do view.setCenter (0,0), the whole view returns to the middle of the original window.

如何解决这个问题?

推荐答案

代替使用 view.setCenter(500,300); 通过 view.move(x_offset, y_offset);.然后应用 setCenter(...) 不会重新定义中心,也不会被重置.

Instead of using view.setCenter(500,300); move it via view.move(x_offset, y_offset);. Then applying setCenter(...) won't redefine the center and it won't get reset.

我建议参考 View 的 API 参考 进一步阅读.

I recommend consulting the API reference of View for further reading.

您可能还对 void sf::View::setViewport(const FloatRect& viewport)void sf::View::reset(const FloatRect& rectangle) 感兴趣代码>.

You might also be interested in void sf::View::setViewport(const FloatRect& viewport) or void sf::View::reset(const FloatRect& rectangle).

这篇关于SFML 视图 setCenter 与旋转的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆