Comment trouver la taille de la fenêtre dans XNA

10

Je voulais juste savoir s'il y avait un moyen de connaître la taille de la fenêtre dans XNA. Je ne veux pas le régler sur une taille spécifique; Je voudrais savoir quelles dimensions il affiche actuellement automatiquement. Existe-t-il un moyen de trouver ces informations?

Je me rends compte que j'aurais probablement dû trouver ces informations (ou les définir moi-même manuellement) avant de travailler sur le jeu, mais je suis un novice et j'espère maintenant travailler dans les dimensions dans lesquelles j'ai déjà investi. Merci!

Nick Van Hoogenstyn
la source

Réponses:

15

Voici vos options:

Pour obtenir la taille du tampon arrière, utilisez:

GraphicsDevice.PresentationParameters.Bounds(pour un rectangle) ou BackBufferWidthet BackBufferHeight.

Vous voulez la taille du tampon arrière si vous faites des choses comme définir des fenêtres, prendre des captures d'écran, etc.

Pour obtenir la fenêtre d'affichage , utilisez:

GraphicsDevice.Viewport.Bounds(pour un rectangle) ou Widthet Height.

La taille de la fenêtre d'affichage est celle que vous souhaitez utiliser lorsque vous effectuez réellement un rendu . Toutes les coordonnées que vous transmettez se SpriteBatchtrouvent dans l'espace client aligné sur les pixels en termes de fenêtre: (0,0) pour le pixel supérieur gauche à (largeur-1, hauteur-1) pour le coin inférieur droit. Si vous faites des trucs 3D, l'espace de projection va de (-1, -1) en bas à gauche de la fenêtre à (1,1) en haut à droite.

Vous pouvez ajuster la taille et la position de la fenêtre d'affichage à l'écran (pour faire des effets comme un écran partagé). Ainsi, bien qu'il soit initialisé à la taille du back-buffer, il n'est pas nécessairement toujours le même.

Si vous faites des trucs de mise en page d'interface, en particulier si vous allez exécuter sur la Xbox 360, sachez-le Viewport.TitleSafeArea. Cela vous indique quelle région est définitivement visible sur les écrans qui peuvent couper une partie de la frontière.

Si, pour une raison quelconque, vous travaillez réellement avec la fenêtre de jeu elle-même, utilisez Game.GameWindow.ClientBounds.

Andrew Russell
la source
Merci beaucoup! J'aurais dû préciser que c'était un jeu 2D mais c'était gentil de votre part de donner les deux réponses. Lire sur les fenêtres maintenant.
Nick Van Hoogenstyn
2

GraphicsDevice.Viewport.Bounds - cela renvoie Rectangle2D et il a les paramètres Largeur et Hauteur.

zacharmarz
la source