Я создаю гистограмму с использованием библиотеки SFML и Visual-C ++. Я хочу установить начальную точку гистограммы, поэтому я пытаюсь использовать функцию move и setOrigin, но она не может быть успешной.
sf::RectangleShape rec1(sf::Vector2f(stage1x*1000, stage1y*1000));
sf::RectangleShape rec2(sf::Vector2f(stage2x*1000, stage2y*1000));
sf::RectangleShape rec3(sf::Vector2f(stage3x*1000, stage3y*1000));
rec1.setOrigin(0, 0);
rec2.setOrigin(0, 0);
rec3.setOrigin(0, 0);
rec1.move(200, 700); // This moves the Rectangle over 200 pixels and down 700 pixels
rec2.move(300, 700); // This moves the Rectangle over 300 pixels and down 700 pixels
rec3.move(400, 700); // This moves the Rectangle over 400 pixels and down 700 pixels
rec1.setFillColor(sf::Color(100, 250, 50));
rec2.setFillColor(sf::Color(10, 20, 100));
rec3.setFillColor(sf::Color(500, 600, 700));
Много разных подходов для этого. Например, вы можете установить высоту окна sf::View
к отрицательному значению, которое по существу перевернуло бы все по вертикали (координаты бегут снизу вверх).
setOrigin()
на чертежах SFML будет перемещаться только их локальное происхождение, то есть определять, какая точка выровнена относительно позиции, указанной в setPosition()̀
, По умолчанию происхождение установлено на (0, 0)
так что ваш код ничего не меняет.
Вместо того, чтобы использовать move()
Я бы позвонил setPosition()
напрямую (что устанавливает абсолютную позицию, а не относительную). Если вы хотите, чтобы стержни шли вверх, переверните вид, как описано выше, или просто вычтите высоту стержней из их положения Y.
Других решений пока нет …