将精灵放置在(0,0)上可以使精灵离开屏幕几像素

时间:2019-04-28 19:44:49

标签: c++ sfml

当我将精灵放置在0、0(屏幕的左上角)时,它不会显示。屏幕外只有几个像素。这是我的代码示例。

Sprite s;
Texture t;

t.loadFromFile("Tiles.png");
t.setSmooth(false);

s.setTexture(t);
s.setTextureRect(IntRect(0, 0, 16, 16));

s.setPosition(0, 0);

window.draw(s);

window.display();

如果我添加

Style::None

到我的RenderWindow,然后将精灵正确放置在屏幕的左上方。

有没有一种方法可以将精灵放置到忽略Windows标题栏的位置?还是解决此问题的另一种方法?我似乎能够正确定位精灵的唯一方法是,如果我猜它有多少像素,并手动向精灵位置添加偏移量,但这是一种非常糟糕的方法,我无法将其定位完美。如果将位置设置为(11,64),则精灵将位于屏幕的左上方。

编辑:这是我用来重现此问题的完整示例代码:

#include <SFML/Graphics.hpp>

using namespace sf;

const int WIDTH = 1000;
const int HEIGHT = 1000;

int main()
{
    RenderWindow window(VideoMode(WIDTH, HEIGHT), "Window", Style::Titlebar | Style::Close);

    RectangleShape square(Vector2f(100.f, 100.f));
    square.setFillColor(Color::Red);
    square.setPosition(0, 0);

    while (window.isOpen())
    {
        Event windowEvent;

        while (window.pollEvent(windowEvent))
        {
            if (windowEvent.type == Event::Closed)
            {
                window.close();
            }
        }

        window.clear(Color::White);
        window.draw(square);
        window.display();
    }

    return 0;
}

运行它时,这就是我得到的结果。 https://i.imgur.com/bIOnb4L.png

自发布此问题以来,我已经意识到问题是,启用标题栏时,它占用了我的窗口中的空间,(0,0)位于标题栏的后面。不过,我仍然不知道该如何解决。

0 个答案:

没有答案