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

C++ SFML将相同的大小设置为多个形状,c++,graphics,drawing,sfml,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.setOutlineThicknes

我有一个向量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);
}
std::向量矩形;
对于(int i=0;i
我的问题是大小只适用于最后一个矩形。见:

形状的位置工作得很好

我还尝试创建一个新的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);
}
for(int i=0;i
但我有同样的结果

谢谢你的帮助


顺便说一句,我在最后一个SFML版本中使用Visual Studio 17,我没有尝试任何代码,但根据图像,我非常确定您正在重叠这些矩形

矩形之间的间隙由以下句子确定:

r.setPosition(i*WEIGHT\u矩形,0)

我假设您的
权重\u矩形
(可能您的意思是
宽度\u矩形
)现在有一个小值,大约10或20像素

您应该为每个矩形留出空间,并记住矩形本身的宽度,例如:

r.setPosition(i*(宽度×矩形+间隙),0)


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

什么是
WEIGHT\u矩形
?从您的图片判断,所有矩形的大小都正确。它们重叠,所以你只能完整地看到最后一个。事实上,问题是矩形的位置(正如你所说的重叠)。问题解决了,谢谢!