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