Résolution individuelle pour écrans multiples

Questions techniques liées à l’utilisation d'Unity (et n'entrant pas dans le cadre d'une des sections suivantes)
seb7000
Messages : 140
Inscription : 05 Mars 2010 17:51

Résolution individuelle pour écrans multiples

Message par seb7000 » 05 Mars 2012 18:08

Bonjour, ça fait quelques temps maintenant que j'aimerais pouvoir connaitre dans Unity la résolution de chacun des écrans connectés à mon PC de façon individuelle afin de mieux gérer l'affichage.
De façon simple réaliser une boucle me permettant de connaitre la résolution de chaque écran.
Avec les fonctions natives telles que Screen.width, c'est la taille de l'écran virtuel (composé de mes 2 écrans) qui est donnés.

Je sais qu'à partir de System.Windows.Forms.Screen.AllScreens() je peux accéder à ce genre de propriété (testé sous vb.net) avec un code ressemblant à ceci

Code : Tout sélectionner

for (int i =0; i<Screen.AllScreens().Length; i++) {
print(Screen.AllScreens(i).Bounds.X);
print(Screen.AllScreens(i).Bounds.Y);
print(Screen.AllScreens(i).Bounds.Width);
print(Screen.AllScreens(i).Bounds.Height);
}
Le seul hic est qu'à partie de Unity je ne peux pas directement utiliser "using System.Windows.Forms;" ...
Doc ici : http://msdn.microsoft.com/fr-fr/library ... creen.aspx

Tous mes essais restent infructueux pour l'instant (en me servant de DllImport ou encore en essayant d'intégrer la dll directement à Unity ou dans le dossier "plugins"), quelqu'un pourrait-il me mettre sur la voix afin que je puisse me servir de la dll "System.Windows.Forms" svp ?

Par avance merci

Avatar de l’utilisateur
artemisart
Messages : 1893
Inscription : 21 Juin 2011 19:51
Localisation : Centre
Contact :

Re: Résolution individuelle pour écrans multiples

Message par artemisart » 05 Mars 2012 20:56

Salut,
En fait, vu que Unity utilise Mono (et qu'il est multiplateforme), on ne peut rien utiliser de System.Windows.
J'ai essayé aussi et ça a pas marché du tout...

un peu plus d'infos : http://www.mono-project.com/Compatibility mais je ne sais pas si tout est disponible dans Unity.

seb7000
Messages : 140
Inscription : 05 Mars 2010 17:51

Re: Résolution individuelle pour écrans multiples

Message par seb7000 » 06 Mars 2012 10:29

Merci de ta réponse
J'ai également creusé du côté de la fonction GetSystemMetrics

Code : Tout sélectionner

[DllImport("user32.dll")]
        public static extern int GetSystemMetrics  (int nIndex );     
J'arrive une fois de plus à récupéré les dimensions de l'écran virtuel composé des 2 écrans mais pas individuellement
Si quelqu'un peut m'aiguiller cela m'aiderais grandement ...

Avatar de l’utilisateur
ZJP
Messages : 5748
Inscription : 15 Déc 2009 06:00

Re: Résolution individuelle pour écrans multiples

Message par ZJP » 06 Mars 2012 15:14

Salut,

GetSystemMetrics n'est pas (me semble-til) la bonne fonction pour cela. Elle ne gère que le "virtuel" (l'espace combinée de tout les moniteur). Dommage, car c'est plutôt simple d'emploi.
GetSystemMetrics (SM_CMONITORS) pour le nombre de moniteurs connectés. Sinon, pour les infos individuelles, il faut utiliser : EnumDisplaySettings ou EnumDisplayDevices
Pas encore essayé ces fonctions. Donc, pour l'aide possible désolé. ;)

JP

seb7000
Messages : 140
Inscription : 05 Mars 2010 17:51

Re: Résolution individuelle pour écrans multiples

Message par seb7000 » 06 Mars 2012 15:53

Merci pour ta réponse.
Effectivement c'est bien ce que je disais, GetSystemMetrics est uniquement pour l'écran virtuel
Par contre je le conseille car vraiment simple à mettre en œuvre selon les besoins, dommage que ça ne réponde pas aux miens :lol:

J'étais également tombé sur les fonctions EnumDisplaySettings ou EnumDisplayDevices mais je n'ai pas réussi à les mettre en œuvres, je vais continuer à creuser de ce côté ci.
Ca fait plusieurs jours que j'y suis et je bloque complètement sur ces fonctions.

Répondre

Revenir vers « Unity le logiciel »