在整个窗口中拉伸sf :: Sprite

时间:2015-05-13 00:34:33

标签: sfml

我有一个sf :: Sprite,在将它绘制到窗口时,我想让它填满整个窗口。

sf :: RenderWindow.draw采用可选的sf :: RenderStates。那是我需要搞砸的吗?

1 个答案:

答案 0 :(得分:4)

首先,教程中的basic Sprite usage

取自Resizing in SFML 2.0上我自己的答案,顺便说一句,这是搜索“sfml sprite填充屏幕时”的第一个google结果。

  

首先,这是一种将图像缩放到当前RenderWindow的方法   大小

// assuming the given dimension
// change this dynamically with the myRenderWindow->getView().getSize()
sf::Vector2f targetSize(900.0f, 1200.0f); 

yourSprite.setScale(
    targetSize.x / yourSprite.getLocalBounds().width, 
    targetSize.y / yourSprite.getLocalBounds().height);
     

请注意,如果纵横比不是,则可能会拉伸图像   保持。您可能希望添加代码来调整您的决策   情况下。

     

然后,如果你想拉伸RenderWindow来填充所有的屏幕,   我可以建议你使用全屏模式吗?

     

以下是它如何完成的片段:

// add the flag to the other ones
mStyleFlag = sf::Style::Default | sf::Style::Fullscreen;

// get the video mode (which tells you the size and BPP information of the current display
std::vector<sf::VideoMode> VModes = sf::VideoMode::getFullscreenModes();

// then create (or automatically recreate) the RenderWindow
mMainWindow.create(VModes.at(0), "My window title", mStyleFlag);

如果您正在寻找背景,最优雅的方法可能就是定义一个sf :: VertexArray,它将使用正确的纹理坐标渲染四边形填充窗口。

这取自第二个google结果:What happened to sprite::setSize in SFML2?