SFML视图与窗口混乱
SFML Views vs window confusion
我有这个单个C /sfml代码...
#include <SFML/Graphics.hpp>
#define windowWidth 600
#define windowHeight 300
int main()
{
sf::RenderWindow window(sf::VideoMode(windowWidth, windowHeight), "SFML Views");
sf::View view(sf::FloatRect(0,0, windowWidth, windowHeight));
view.zoom(2);
window.setView(view);
sf::RectangleShape back (sf::Vector2f(windowWidth, windowHeight));
back.setFillColor(sf::Color::White);
sf::RectangleShape rect (sf::Vector2f(200, 100));
rect.setFillColor(sf::Color::Red);
rect.setPosition(windowWidth - rect.getSize().x, windowHeight - rect.getSize().y); // position in the lower right corner
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.draw(back);
window.draw(rect);
window.display();
}
return 0;
}
...可能将红色矩形放在窗户的右下角。
但是,当我将视图放大(如代码中(时,它显然像此图像一样与整个窗口一起移动。我有一些疑问:
- 要纠正红色矩形的定位并将其放置在全局窗口的右下角,我目前必须考虑Zoom因子,原始矩形大小等进行一些计算。矩形在全局窗口的右下角?
- 如何防止某些对象通过视图的变焦调整大小?
- 在同一窗口中有多个活动视图我该怎么办?
是否有任何更轻松的方法将该矩形放在全局窗口的低右角?
来自SFML 2D摄像机教程:"要使用视图绘制某些内容,您必须在调用绘制目标的setView函数之后绘制它"
">因此,绘图零件应为
window.clear();
window.setView(view);
window.draw(back);
window.setView(window.getDefaultView()); //don't zoom red rect
window.draw(rect);
window.display();
在同一窗口中有多个活动视图我该怎么办?
只需调用每个活动视图的setView()
,然后在该视图中绘制所有内容(如果需要的话(
window.setView(leftHalfView);
window.draw(a);
window.draw(b);
window.draw(c);
window.setView(rightHalfView);
window.draw(a);
window.draw(b);
window.draw(c);
window.setView(minimap);
window.draw(a);
window.draw(b);
window.setView(window.getDefaultView());
window.draw(x);
window.draw(y);
相关文章:
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 问:如何使用C++中的按钮从窗口打开窗口
- SDL 窗口不会弹出
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 如何克服提升精神AST混乱
- 如何在cpp文件之间切换窗口?在Qt中
- QuadTree只在窗口的右上角绘制
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 如何在C++中找到active directory中禁用和锁定的窗口帐户
- 处理闪烁窗口事件
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- C++win32 API创建多个类似视口的窗口
- SFML RenderWindow打开窗口需要很长时间
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 获取 SFML 窗口的 HWND 和高可用性?
- 如何获取 GLFW 窗口 ID?
- GLEW/GLUT:调用init并创建一个窗口后,取消初始化并重新初始化?
- 用于窗口的 HID 终端
- SFML视图与窗口混乱
- 如何在等待程序启动混乱/ GTK+时制作加载/介绍动画弹出窗口