Расположение спрайта в (0, 0) помещает спрайт за пределы экрана на несколько пикселей - PullRequest
1 голос
/ 28 апреля 2019

Когда я помещаю спрайт в 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, тогда спрайт правильно позиционируется в левом верхнем углу экрана.

Есть ли способ позиционирования спрайтов, игнорируя строку заголовка окна? Или другой способ исправить эту проблему? Единственный способ, которым я могу правильно расположить спрайт, - это угадать, на сколько пикселей он находится, и вручную добавить смещение к позиции спрайтов, но это очень плохой способ, и я не могу его позиционировать. в совершенстве. Если я установлю положение на (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) находится за строкой заголовка. Я до сих пор не знаю, как это исправить.

...