其他分享
首页 > 其他分享> > c – 在SFML 2.X中,窗口按窗口按比例调整大小

c – 在SFML 2.X中,窗口按窗口按比例调整大小

作者:互联网

该代码不在SFML站点上的教程中.当我编译并运行它时,圆圈按比例缩放,因为窗口是由用户缩放的.我希望圆圈保持恒定的形状.

当屏幕重新调整大小时,正确的屏幕尺寸和正确的圆半径都会打印到控制台,但是圆圈被绘制到屏幕的方式绝对不是它声称的那样.圆圈在任何方面都没有视觉上的扭曲,但看起来好像是用一组不同的值来绘制,而不是打印到控制台的内容.

如果有帮助的话,antialiasingLevel对形状黎明没有任何影响.

#include <iostream>
#include <SFML/Graphics.hpp>

int main()
{
    sf::ContextSettings settings;
    settings.antialiasingLevel = 8;

    sf::RenderWindow window(sf::VideoMode(200, 200), "Title", sf::Style::Default, settings);
    sf::CircleShape shape(100);
    shape.setFillColor(sf::Color::Green);

    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
            else if (event.type == sf::Event::Resized)
            {
                std::cout << "resize: ("  << event.size.width << ',' << event.size.height << ") -> " << shape.getRadius() << std::endl;
            }
        }

        window.clear();
        window.draw(shape);
        window.display();
    }

    return 0;
}

解决方法:

调整大小的事件中添加的以下行将更正此问题.

window.setView(sf::View(sf::FloatRect(0, 0, event.size.width, event.size.height)));

问题似乎是视图不会自动缩放以适应新的分辨率.

标签:sfml,c
来源: https://codeday.me/bug/20190824/1712177.html