SFML将相同大小设置为多个形状

时间:2018-05-08 17:02:42

标签: c++ graphics drawing sfml

我有 sf :: RectangleShape 的向量。我希望所有矩形都具有相同的大小。我使用以下循环创建矩形:

std::vector<sf::RectangleShape> rectangles;

for (int i = 0; i < N; i++) {
    sf::RectangleShape r(sf::Vector2f(200,100));
    r.setOutlineColor(sf::Color::Red);
    r.setOutlineThickness(1);
    r.setPosition(i*WEIGHT_RECTANGLE, 0);
    r.setFillColor(sf::Color(150, 50, 250));
    rectangles.push_back(r);
}
  

我的问题是尺寸仅适用于最后一个矩形。见:   Size only applying for the last rectangle

形状的位置效果很好。

我还试图创建一个新的sf :: Vector2f并使用这样的setSize函数:

for (int i = 0; i < N; i++) {
    sf::RectangleShape r;
    sf::Vector2f size(200, 100);
    r.setSize(size)
    r.setOutlineColor(sf::Color::Red);
    r.setOutlineThickness(1);
    r.setPosition(i*WEIGHT_RECTANGLE, 0);
    r.setFillColor(sf::Color(150, 50, 250));
    rectangles.push_back(r);
}

但我有同样的结果。

感谢您的帮助!

使用Visual Studio 17和最后一个SFML版本

1 个答案:

答案 0 :(得分:0)

我没有尝试任何代码,但基于图像,我很确定你是否重叠这些矩形。

矩形之间的差距由这句话确定:

r.setPosition(i*WEIGHT_RECTANGLE, 0);

我认为你的WEIGHT_RECTANGLE(也许你的意思是WIDTH_RECTANGLE)现在有一个很小的值,大概可能是10或20像素。

你应该考虑到矩形本身的宽度,每个矩形的空间,如:

r.setPosition(i*(WIDTH_RECTANGLE + GAP), 0);

其中GAP是矩形之间的实际间隙。