Jak znaleźć rozmiar okna w XNA

10

Chciałem tylko wiedzieć, czy istnieje sposób, aby sprawdzić rozmiar okna w XNA. Nie chcę ustawiać określonego rozmiaru; Chciałbym wiedzieć, jakie wymiary obecnie wyświetla jako automatycznie. Czy istnieje sposób na znalezienie tych informacji?

Zdaję sobie sprawę, że prawdopodobnie powinienem był znaleźć te informacje (lub ustawić je samodzielnie) przed pracą nad grą, ale jestem nowicjuszem i mam nadzieję, że będę pracować w ramach wymiarów, w które już się zainwestowałem. Dzięki!

Nick Van Hoogenstyn
źródło

Odpowiedzi:

15

Oto twoje opcje:

Aby uzyskać rozmiar bufora wstecznego, użyj:

GraphicsDevice.PresentationParameters.Bounds(w prostokącie) lub BackBufferWidtha BackBufferHeight.

Chcesz rozmiar bufora wstecznego, jeśli robisz takie rzeczy, jak ustawianie rzutni, robienie zrzutów ekranu itp.

Aby uzyskać rzutnię , użyj:

GraphicsDevice.Viewport.Bounds(w prostokącie) lub Widtha Height.

Rozmiar rzutni jest tym, czego chcesz użyć, gdy faktycznie renderujesz rzeczy . Wszelkie przekazywane współrzędne SpriteBatchznajdują się w wyrównanej do pikseli przestrzeni klienckiej pod względem obszaru wyświetlania: (0,0) dla lewego górnego piksela do (szerokość-1, wysokość-1) dla prawego dolnego rogu. Jeśli robisz rzeczy 3D, przestrzeń projekcyjna zmienia się z (-1, -1) w lewym dolnym rogu rzutni na (1,1) w prawym górnym rogu.

Możesz dostosować rozmiar i położenie rzutni na ekranie (do robienia efektów takich jak podział ekranu). Tak więc, chociaż jest on inicjowany do rozmiaru bufora tylnego, niekoniecznie jest zawsze taki sam.

Jeśli robisz rzeczy związane z układem interfejsu, szczególnie jeśli będziesz działać na Xbox 360, pamiętaj o tym Viewport.TitleSafeArea. Dzięki temu dowiesz się, który region jest zdecydowanie widoczny na ekranach, które mogą odciąć część granicy.

Jeśli z jakiegoś powodu faktycznie pracujesz z samym oknem gry, użyj Game.GameWindow.ClientBounds.

Andrew Russell
źródło
Wielkie dzięki! Powinienem był powiedzieć, że była to gra 2D, ale miło z twojej strony, że dałeś obie odpowiedzi. Czytam teraz w rzutniach.
Nick Van Hoogenstyn
2

GraphicsDevice.Viewport.Bounds - zwraca Rectangle2D i ma parametry Szerokość i Wysokość.

zacharmarz
źródło