2016-07-19 3 views
1

C++ 및 SFML을 사용하여 간단한 응용 프로그램을 만들려고합니다. 응용 프로그램이 모든 해상도 (창 또는 전체 화면)에서 작동하고 싶습니다.SFML - 창 크기 조정 후 센터보기

문서에서 찾은 해결책 중 가장 가까운 것은 간단한 코드 조각입니다.

if (event.type == sf::Event::Resized) 
{ 
    // update the view to the new size of the window 
    sf::FloatRect visibleArea(0, 0, event.size.width, event.size.height); 
    window.setView(sf::View(visibleArea)); 
} 

http://i.imgur.com/RvCOuKi.png처럼 보이는 효과를 만듭니다.

이것은 시작이지만 정확히 내가 원하는 것은 아닙니다. 창 크기를 조정하면 "원본"보기 공간이 왼쪽 상단에 있고 새로 표시되는 모든 객체가 원래 사각형의 아래 또는 오른쪽에 있습니다.

이 크기 조정 방법은보기 흉한 것으로 생각합니다. 한 화면 해상도의 화면 중앙에 뭔가를 넣을 때 다른 해상도에서도 중앙에 있어야합니다. 이것이 발생하는 방식으로 뷰를 중앙에 배치하려면 어떻게해야합니까?

위대한 예가 미니 크래프트입니다. 미니 크래프트에서 창 크기를 조정하면 "원래"뷰포트가 가장 가운데에 표시되고 가장자리에 새롭게 표시되는 객체가 나타납니다. SFML로 어떻게 다시 만들 수 있습니까?

답변

1

그냥 another constructor을 사용하여 현재 뷰의 중심을 통과 :

if (event.type == sf::Event::Resized) 
{ 
    // update the view to the new size of the window and keep the center 
    window.setView(sf::View(window.getView().getCenter(), sf::Vector2f((float)event.size.width, (float)event.size.height))); 
}