【发布时间】:2018-04-24 20:07:34
【问题描述】:
我有这个单一的 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;
}
...这可能会将红色矩形定位在窗口的右下角。
但是,当我放大视图(如代码中所示)时,它显然会像this image 一样随着整个窗口移动。 我有一些疑问:
- 为了修正红色矩形的位置并将其放置在全局窗口的右下角,我目前必须考虑缩放因子、原始矩形大小等进行一些计算。有没有更简单的方法来定位这个全局窗口右下角的矩形?
- 如何防止某些对象因视图的缩放而调整大小?
- 如何在同一个窗口中拥有多个活动视图?
【问题讨论】: