我有 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);
}
形状的位置效果很好。
我还试图创建一个新的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版本
答案 0 :(得分:0)
我没有尝试任何代码,但基于图像,我很确定你是否重叠这些矩形。
矩形之间的差距由这句话确定:
r.setPosition(i*WEIGHT_RECTANGLE, 0);
我认为你的WEIGHT_RECTANGLE
(也许你的意思是WIDTH_RECTANGLE
)现在有一个很小的值,大概可能是10或20像素。
你应该考虑到矩形本身的宽度,每个矩形的空间,如:
r.setPosition(i*(WIDTH_RECTANGLE + GAP), 0);
其中GAP
是矩形之间的实际间隙。