SFML-调整窗口大小后居中查看
SFML - Center view after window resize
我正在尝试使用c++和SFML制作一个简单的应用程序。我希望这个应用程序能以任何分辨率工作——窗口或全屏。
我在文档中找到的最接近解决方案的是这段简单的代码。
if (event.type == sf::Event::Resized)
{
// update the view to the new size of the window
sf::FloatRect visibleArea(0, 0, event.size.width, event.size.height);
window.setView(sf::View(visibleArea));
}
这会产生这样的效果https://i.stack.imgur.com/UMbtx.png.
这是一个开始,但这并不是我想要的。当我调整窗口大小时,"原始"查看空间在左上角,新可见的对象都在原始矩形的下方或右侧。
我认为这种调整大小的方法很难看。当我以一种分辨率将某个东西放在屏幕中心时,即使在另一种分辨率下,它也应该保持在中心。如何使视图居中,从而发生这种情况?
minecraft就是一个很好的例子。在minecraft中,当您调整窗口大小时,"原始"视口位于最中心,新可见的对象出现在边缘周围。如何在SFML中重新创建它?
只需使用另一个构造函数并通过当前视图的中心:
if (event.type == sf::Event::Resized)
{
// update the view to the new size of the window and keep the center
window.setView(sf::View(window.getView().getCenter(), sf::Vector2f((float)event.size.width, (float)event.size.height)));
}
相关文章:
- SDL2 调整窗口大小后如何缩放鼠标坐标?
- QGraphics手动调整窗口大小后场景宽度/高度没有变化
- Qt - 防止在拖动标题栏时调整窗口大小
- 在 Direct2D 绘图中,调整窗口大小后尺寸会更改
- 使用第二个线程快速更新 GUI 窗口会通过调整窗口大小或移动窗口而崩溃
- QT调整窗口大小后,删除窗口后
- 在Windows中平滑调整窗口大小(使用Direct2D 1.1)
- 如何使用 WTL 拒绝调整窗口大小
- SDL中的Alpha混合在调整窗口大小后重置
- OpenGL-如何调整窗口大小
- 当在拖动/调整窗口大小的同时对窗口调用isActive()时,返回false.(X11,问题5.4.0)
- 调整窗口大小后交换渲染缓冲区会导致问题
- 避免双击调整窗口大小
- MFC 程序崩溃时调整窗口大小并出现错误"A required resource was not found."
- 调整窗口大小,使主要小部件具有特定的大小
- 如何在sfml中调整窗口大小
- 为什么我不能得到放大和缩小的效果,但必须先调整窗口大小
- 调整窗口大小会导致右边框附近出现涂抹
- ncurses:wgetch在移动/调整窗口大小后无法正确读取
- Qt调整窗口大小以适应滚动区域问题中的纵横比