Cómo encontrar el tamaño de la ventana en XNA

10

Solo quería saber si había una manera de averiguar el tamaño de la ventana en XNA. No quiero establecerlo en un tamaño específico; Me gustaría saber qué dimensiones muestra actualmente de forma automática. ¿Hay alguna manera de encontrar esta información?

Me doy cuenta de que probablemente debería haber encontrado esta información (o configurarla yo mismo manualmente) antes de trabajar en el juego, pero soy un novato y ahora espero trabajar dentro de las dimensiones en las que ya he invertido. ¡Gracias!

Nick Van Hoogenstyn
fuente

Respuestas:

15

Aquí están tus opciones:

Para obtener el tamaño del búfer posterior, use:

GraphicsDevice.PresentationParameters.Bounds(para un rectángulo) o BackBufferWidthy BackBufferHeight.

Desea el tamaño del búfer de respaldo si está haciendo cosas como configurar ventanas gráficas, tomar capturas de pantalla, etc.

Para obtener la ventana gráfica , use:

GraphicsDevice.Viewport.Bounds(para un rectángulo) o Widthy Height.

El tamaño de la ventana gráfica es lo que desea usar cuando realmente está renderizando cosas . Todas las coordenadas que pase SpriteBatchestán en el espacio del cliente alineado con píxeles en términos de la ventana gráfica: (0,0) para el píxel superior izquierdo a (ancho-1, altura-1) para la parte inferior derecha. Si está haciendo cosas en 3D, el espacio de proyección va de (-1, -1) en la parte inferior izquierda de la ventana gráfica a (1,1) en la parte superior derecha.

Puede ajustar el tamaño y la posición de la ventana gráfica en la pantalla (para hacer efectos como pantalla dividida). Por lo tanto, si bien se inicializa al tamaño del búfer de respaldo, no necesariamente es siempre el mismo.

Si está haciendo cosas de diseño de interfaz, especialmente si va a ejecutar en la Xbox 360, tenga en cuenta Viewport.TitleSafeArea. Esto le indica qué región es definitivamente visible en las pantallas que pueden cortar parte del borde.

Si, por alguna razón, en realidad estás trabajando con la ventana del juego, úsala Game.GameWindow.ClientBounds.

Andrew Russell
fuente
¡Muchas gracias! Debería haber especificado que era un juego en 2D, pero fue amable de su parte dar ambas respuestas. Leyendo en Viewports ahora.
Nick Van Hoogenstyn
2

GraphicsDevice.Viewport.Bounds: devuelve Rectangle2D y tiene parámetros Width y Height.

zacharmarz
fuente