当我将精灵放置在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)位于标题栏的后面。不过,我仍然不知道该如何解决。