使用SFML平铺图像

5

我有一个背景图像,但当我的窗口大小为800 x 600时,它只有256 x 256。我不知道如何使图像在整个窗口中重复。我目前是使用以下代码将图像加载进来:

sf::Texture Bkg;
if(!Bkg.loadFromFile("darkPurple.png"))
{
    return -1;
}

sf::Sprite Sprite;
Sprite.setTexture(Bkg);

然后用以下方式进行绘制:

window.draw(Bkg);

我尝试使用:

texture.setRepeated(true);

但是那似乎没有起到帮助的作用。

谢谢!


顺便提一下,如果你想给背景上色,你不需要一个jpg文件,你可以直接使用这个:window.clear(sf::Color(128,0,128));,前提是"window"是一个RenderWindow对象。 - Dovahkiin
1个回答

7
加载图像后,您需要调用setRepeated:函数:
    texture.setRepeated(true);

之后,在您的精灵中加载纹理时,请将纹理矩形设置为屏幕大小:

    sprite.setTexture(texture);
    sprite.setTextureRect(sf::IntRect(0,0,800,600);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接