Como encontrar o tamanho da janela no XNA

10

Eu só queria saber se havia uma maneira de descobrir o tamanho da janela no XNA. Não quero configurá-lo para um tamanho específico; Gostaria de saber quais dimensões são exibidas atualmente automaticamente. Existe uma maneira de descobrir essas informações?

Sei que provavelmente deveria ter encontrado essas informações (ou defini-las manualmente) antes de trabalhar no jogo, mas sou novato e agora espero trabalhar dentro das dimensões em que já investi. Obrigado!

Nick Van Hoogenstyn
fonte

Respostas:

15

Aqui estão as suas opções:

Para obter o tamanho do buffer de fundo, use:

GraphicsDevice.PresentationParameters.Bounds(para um retângulo) ou BackBufferWidthe BackBufferHeight.

Você quer o tamanho do buffer de fundo se estiver fazendo coisas como definir viewports, tirar capturas de tela etc.

Para obter o Viewport , use:

GraphicsDevice.Viewport.Bounds(para um retângulo) ou Widthe Height.

O tamanho da janela de visualização é o que você deseja usar quando estiver renderizando coisas . Todas as coordenadas para as quais você passa SpriteBatchestão no espaço do cliente alinhado por pixels em termos da janela de exibição: (0,0) para o pixel superior esquerdo para (largura-1, altura-1) no canto inferior direito. Se você estiver fazendo coisas em 3D, o espaço da projeção vai de (-1, -1) no canto inferior esquerdo da janela de exibição para (1,1) no canto superior direito.

Você pode ajustar o tamanho e a posição da janela na tela (para fazer efeitos como tela dividida). Portanto, embora seja inicializado com o tamanho do buffer de fundo, nem sempre é o mesmo.

Se você estiver fazendo coisas de layout de interface, principalmente se for executado no Xbox 360, esteja ciente Viewport.TitleSafeArea. Isso indica qual região é definitivamente visível em telas que podem cortar parte da borda.

Se, por algum motivo, você estiver realmente trabalhando com a própria janela do jogo, use Game.GameWindow.ClientBounds.

Andrew Russell
fonte
Muito obrigado! Eu deveria ter especificado que era um jogo 2D, mas foi legal da sua parte dar as duas respostas. Lendo as Viewports agora.
Nick Van Hoogenstyn
2

GraphicsDevice.Viewport.Bounds - retorna Rectangle2D e possui os parâmetros Width e Height.

zacharmarz
fonte