SFML установить одинаковый размер для нескольких фигур - PullRequest
0 голосов
/ 08 мая 2018

У меня есть вектор 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 голосов
/ 10 мая 2018

Я не пробовал никакого кода, но, основываясь на изображении, я почти уверен, что вы перекрываете эти прямоугольники.

Разрыв между прямоугольниками определяется этим предложением:

r.setPosition(i*WEIGHT_RECTANGLE, 0);

Я полагаю, что ваше WEIGHT_RECTANGLE (может быть, вы имеете в виду WIDTH_RECTANGLE) теперь имеет небольшое значение, около 10 или 20 пикселей, вероятно.

Вы должны расставлять каждый прямоугольник, имея в виду ширину самого прямоугольника, что-то вроде:

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

Где GAP - фактический зазор между прямоугольниками.

...