2017-02-19 3 views
0

저는 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)); 

This is a picture of my bar chart

답변

1

이 다른 방법의 제비. 예를 들어, 윈도우의 높이를 음수로 설정하면 기본적으로 모든 것을 수직으로 뒤집을 수 있습니다 (하단에서 상단으로 실행되는 좌표).

setOrigin() SFML의 드로어 블에서만 로컬 출발점 만 이동합니다. 즉, 포인트가 setPosition()̀에 지정된 위치와 일치하는지 확인합니다. 기본적으로 원점은 (0, 0)으로 설정되어 있으므로 코드가 변경되지 않습니다.

move()을 사용하는 대신 setPosition()을 직접 호출해야합니다 (상대적 위치가 아닌 절대 위치가 설정 됨). 막대를 위쪽으로 이동하려면 위에서 설명한대로보기를 뒤집거나 단순히 막대의 높이를 Y 위치에서 뺍니다.

관련 문제