2010-08-24 3 views
1

Je suis en train d'installer un système XNA WinForms pour que je puisse avoir un éditeur de jeu, et j'ai besoin d'utiliser la souris pour cela. Comme la classe d'entrée XNA Mouse indique la position de la souris en fonction de l'emplacement de la fenêtre, j'ai besoin de placer la forme que j'ai au même endroit. Comment puis-je obtenir l'emplacement de la fenêtre utilisée par mon jeu XNA?Xna - Obtenir l'emplacement de la fenêtre?

Répondre

4

je fini par faire avec ce code:

 Form gameWindowForm = (Form)Form.FromHandle(this.Window.Handle); 
     ... 
     myForm.Location = new System.Drawing.Point(gameWindowForm.Location.X - 5,gameWindowForm.Location.Y - 5); //-5 pixels for adjustment 

qui fonctionne dandy!

+0

Ah, donc cela vous donne une référence à la forme réelle ... Bon à savoir! – bcat

+0

J'ai en fait obtenu la première ligne de http://www.codeproject.com/KB/game/XNA_And_Beyond.aspx. Très utile, mais pas complète, sur la façon d'obtenir une configuration de formulaires Windows pour utiliser XNA. – RCIX

+1

le -5 va changer en fonction du style de fenêtre utilisé? Cela ne fonctionnera donc pas correctement avec le style classique, le style Xp et le style vista/7 – McKay

1

Les propriétés X et Y de la structure Game.Window.ClientBounds devraient vous donner les coordonnées de fenêtre absolues que vous recherchez.

+0

Cela fait presque *, mais cela me donne la position de la partie supérieure gauche du contenu de la fenêtre, pas la position réelle de la fenêtre. Voir ma réponse pour comment je l'ai fait. – RCIX

0

J'ai rencontré ce problème aussi avec mon éditeur de niveau. J'ai un picturebox dans mes Windows Forms, la seule chose que je devais à l'initialisation du jeu XNA:

Mouse.WindowHandle = this.windowForm.Viewport.Handle; 

Viewport est le picturebox

maintenant la position de la souris XNA est correctement réglée automatiquement.

Questions connexes