Page 1 sur 2

votre écran mesure Ht x mm larg y mm

Publié : jeu. 13/févr./2014 11:44
par MLD
J'ai un petit problème.
Pour une application, je dois connaitre les dimensions physique d'un écran inconnu quelque soit la définition en cours sur cet écran.
En clair je dois connaitre en mm la hauteur largeur de n'importe quel écran quelque soit la définition.
le mien par exemple ht 280mm larg 506mm.
J'ai rien trouvé , mais j'ai peut'être mal cherché.
Si vous avez des idées merci d'avance.
Michel

Re: votre écran mesure Ht x mm larg y mm

Publié : jeu. 13/févr./2014 12:02
par Micoute
Bonjour MLD, pourquoi ne fais-tu pas un écran virtuel avec des ascenseurs horizontaux et verticaux s'il s'avère que l'écran réel est plus petit que l'écran virtuel !

Re: votre écran mesure Ht x mm larg y mm

Publié : jeu. 13/févr./2014 13:12
par Fig
A mon avis, c'est impossible à savoir, au mieux tu auras la diagonale, mais ça restera très approximatif.
Avec la résolution native et la taille d'un pixel sur un écran plat... Mais comment avoir la taille d'un pixel ? :|

Explique nous pourquoi c'est faire, on t'expliquera comment t'en passer :mrgreen:

Re: votre écran mesure Ht x mm larg y mm

Publié : jeu. 13/févr./2014 13:43
par MLD
Bonjour
Micoute,
Non. le problème reste entier.
Fig
Je sais parfaitement faire autrement. :mrgreen: Mais ceci me simplifirait tellement mon programme que j'insiste :wink:
Note bien que la taille d'un pixel dans n'importe quelle résolution serait aussi trés bien. :lol:

Re: votre écran mesure Ht x mm larg y mm

Publié : jeu. 13/févr./2014 17:10
par falsam
Bonjour MLD

Je pensais qu'en partant de la résolution de l'écran et du nombres de pixels par cm on pouvait retrouver les dimensions d'un écran en cm. Mais ce n'est pas trop le cas. Le code doit être bon pour des photos par contre.

http://fr.wikipedia.org/wiki/Point_par_ ... conversion

Code : Tout sélectionner

;Pixels par cm
hdc = GetDC_(GetDesktopWindow_())
If hdc : dpiX.l = GetDeviceCaps_(hdc, #LOGPIXELSX) : ReleaseDC_(GetDesktopWindow_(), hdc) : EndIf

Debug "Desktop resolution: " + Str(dpiX) + " dpi"
Debug "Pixels par cm: " + StrD(dpiX / 2.54)

ExamineDesktops()

Debug  "Résolution: " + Str(DesktopWidth(0)) + " / "+ Str(DesktopHeight(0))
Debug "Dimension: " + StrD((DesktopWidth(0)/dpiX)*2.54, 2) + " cm / "+ StrD((DesktopHeight(0)/dpiX)*2.54, 2)+ " cm"

Re: votre écran mesure Ht x mm larg y mm

Publié : jeu. 13/févr./2014 17:43
par MLD
Bonsoir falsam

Ton code pour les photos est OK

Pour l'ecran j'ai essayé ceci mais sa ne marche que pour des dimensions en natif.

nbPoints = (pixels/DPI) * 72
1 point = 1.72 inches = 25,4/72 = mm 0.3527
expl haut en mm = nbPoints * 0.3527

C'est un vrais casse tête chinois

Re: votre écran mesure Ht x mm larg y mm

Publié : jeu. 13/févr./2014 17:53
par MLD
@ Falsam

Si tu as une idée pour récuper le DPIet la résolution en natif c'est gagné, il suffit de faire le rapport dans les calculs :lol: :mrgreen:

Re: votre écran mesure Ht x mm larg y mm

Publié : jeu. 13/févr./2014 22:14
par falsam
MLD a écrit :Si tu as une idée pour récuper le DPI et la résolution en natif c'est gagné, il suffit de faire le rapport dans les calculs :lol: :mrgreen:
C'est ce que je fais dans mon code.

Les deux premières lignes récupère le dpi et je fais le rapport résolution/dpi dans les deux dernières lignes.

Re: votre écran mesure Ht x mm larg y mm

Publié : jeu. 13/févr./2014 23:25
par Backup
MLD a écrit :Pour une application, je dois connaitre les dimensions physique d'un écran inconnu quelque soit la définition en cours sur cet écran.
En clair je dois connaitre en mm la hauteur largeur de n'importe quel écran quelque soit la définition.
le mien par exemple ht 280mm larg 506mm.
ben , je pense que c'est tout simplement impossible ....

sur un Ecran 10 pouce , tu peux avoir du 1024x600
ou bien du 800x600

mon ecran (Msi Gt 780 DXR) est en (1920 x 1080 pixels) de 17.3 pouces ... il existe des 17.3 pouce avec un résolution de 1600 x 900 (HP Pavilion g7-2302sf)

donc de la resolution, on ne peut en deduire la taille d'un ecran....

par contre , il est possible que l'information de la taille de l'ecran (10 pouces, 17 pouces, 22 pouces etc ... )
soit noté quelque part dans le Systeme d'exploitation ... ou a une adresse Ram a lire ...
tout comme on lit la température ... on doit pouvoir savoir la taille de l'ecran
quelque part dans le panneau de config ?

[reedit]
en cherchant dans le panneau de config (monitor )

je suis tombé sur cet info :
Image

m'etonnerai pas que ce nombre représente mon monitor en 17.2
compare avec le Tiens ... :)

Re: votre écran mesure Ht x mm larg y mm

Publié : ven. 14/févr./2014 10:27
par MLD
@falsam
" C'est ce que je fais dans mon code.

Les deux premières lignes récupère le dpi et je fais le rapport résolution/dpi dans les deux dernières lignes."

Oui mais seulement si ton écran est configué en natif. Si tu ne connais pas l'écran qui va afficher l'interface de ton logiciel tu vas
simplement avoir la config de l'écran mais pas la config native .
Mais merci :lol:

@ Dobro
J'ai fait comme tu a dit, mais chez moi le résultat ne veut rien dire.
Merci

Voila quelque chose qui semble impossible, et pourtant je suis sur que cette information existe sous une forme ou une autre, car Window a certainement besoin de cette information pour gérer l'affichage. :?: :(

Re: votre écran mesure Ht x mm larg y mm

Publié : ven. 14/févr./2014 11:10
par Backup
quoiqu'il en soit, tu peux Forcer une résolution ...
et ainsi avoir ton univers pour fonctionner .... :)

ps: en fait je ne comprends pas trop pourquoi tu as besoin de connaitre la taille d'un ecran ....

ce qui compte pour un prg c'est la résolution (que tu peux lire, ou imposer )
eventuellement le DPI pour adapter un affichage du text ....

mais franchement la taille de l'ecran (10,17,22 pouces )... je vois pas trop a quoi ça sert 8O
c'est comme vouloir connaitre la couleur du teeshirt de l'utilisateur .. (:lol: )
(encore que ça avec une webcam, on peut le savoir )

Re: votre écran mesure Ht x mm larg y mm

Publié : ven. 14/févr./2014 11:25
par falsam
Merci pour ton code Poshu qui mérite un Like+ :)

Re: votre écran mesure Ht x mm larg y mm

Publié : ven. 14/févr./2014 11:31
par Mesa
Il existe une solution sous Windows:

Code : Tout sélectionner

; VOIR ICI => http://zabaque.uqac.ca/infographie/inf02/pixel.htm


hdc = GetDC_(GetDesktopWindow_())
If hdc
  
  Debug  "Résolution: "
  Debug "========================"
  Debug "Width, in pixels, of the screen"
  resX=GetDeviceCaps_(hdc, #HORZRES)
  Debug resX
  Debug "Height, in raster lines, of the screen"
  resY=GetDeviceCaps_(hdc, #VERTRES)
  Debug resY
  Debug""   
  
  Debug  "DPI: "
  Debug "========================"
  Debug "Number of pixels per logical inch along the screen width"
  dpiX= GetDeviceCaps_(hdc, #LOGPIXELSX)
  Debug dpiX
  Debug "Number of pixels per logical inch along the screen height"
  dpiY= GetDeviceCaps_(hdc, #LOGPIXELSY)
  Debug dpiY
  Debug""

  Debug  "Dimensions de l'écran fournies par le pilote: "
  Debug "================================================="
  Debug "Width, in millimeters, of the physical screen"
  Debug GetDeviceCaps_(hdc, #HORZSIZE)
  Debug "Height, in millimeters, of the physical screen"
  Debug GetDeviceCaps_(hdc, #VERTSIZE)
  Debug""
  
    Debug  "Dimensions calculées de l'écran : "
  Debug "================================================="
  ;Calcul : 
  ; 96 dpi => 1 dot = 1/96 pouce chez Microsoft 
  ; 1 pouce = 2.54 cm
  ; Longeur écran=(ResX/96)*(dpiX/96)*2.54
  Debug "Longeur écran calculé en cm: " + StrD(resX*dpiX*2.54/96/96)
  Debug "Hauteur écran calculé en cm: " + StrD(resY*dpiY*2.54/96/96)
  Debug""  
  ReleaseDC_(GetDesktopWindow_(), hdc)
EndIf





; http://msdn.microsoft.com/en-us/library/windows/desktop/dd144877%28v=vs.85%29.aspx
; 
; HORZSIZE Width, in millimeters, of the physical screen.
; 
; VERTSIZE Height, in millimeters, of the physical screen.
; 
; HORZRES Width, in pixels, of the screen; or for printers, the width, in pixels, of the printable area of the page.
; 
; VERTRES Height, in raster lines, of the screen; or for printers, the height, in pixels, of the printable area of the page.
; 
; LOGPIXELSX Number of pixels per logical inch along the screen width. In a system With multiple display monitors, this value is the same For all monitors.
; 
; LOGPIXELSY Number of pixels per logical inch along the screen height. In a system With multiple display monitors, this value is the same For all monitors.
M.

Re: votre écran mesure Ht x mm larg y mm

Publié : ven. 14/févr./2014 13:04
par Fig
Résolution:
========================
Width, in pixels, of the screen
1920
Height, in raster lines, of the screen
1080

DPI:
========================
Number of pixels per logical inch along the screen width
120
Number of pixels per logical inch along the screen height
120

Dimensions de l'écran fournies par le pilote:
=================================================
Width, in millimeters, of the physical screen
382
Height, in millimeters, of the physical screen
215

Dimensions calculées de l'écran :
=================================================
Longeur écran calculé en cm: 63.5
Hauteur écran calculé en cm: 35.71875
Les dimensions fournies par le pilote sont justes, celles calculés, complétement fausses...

Est ce qu'on peut en déduire que:

Code : Tout sélectionner

  Debug  "Dimensions de l'écran fournies par le pilote: "
  Debug "================================================="
  Debug "Width, in millimeters, of the physical screen"
  Debug GetDeviceCaps_(hdc, #HORZSIZE)
  Debug "Height, in millimeters, of the physical screen"
  Debug GetDeviceCaps_(hdc, #VERTSIZE)
  Debug""
Suffit pour répondre à ta question ?
Donc la dimension réelle est bien accessible. Franchement j'ai appris un truc là ! 8O

Mais à quoi ça sert concrètement ? :?

Re: votre écran mesure Ht x mm larg y mm

Publié : ven. 14/févr./2014 14:19
par Backup
non, chez moi c'est tout Faux !

mis a part ma resolution... mais ça ont peut deja le savoir avec la librairie Desktop() :)

j'ai le meme ecran que Fig (meme dimension)
mais le code n'affiche pas les meme données !
[14 :20 :57] Résolution:
[14 :20 :57] ========================
[14 :20 :57] Width, in pixels, of the screen
[14 :20 :57] 1920
[14 :20 :57] Height, in raster lines, of the screen
[14 :20 :57] 1080
[14 :20 :57]
[14 :20 :57] DPI:
[14 :20 :57] ========================
[14 :20 :57] Number of pixels per logical inch along the screen width
[14 :20 :57] 96
[14 :20 :57] Number of pixels per logical inch along the screen height
[14 :20 :57] 96
[14 :20 :57]
[14 :20 :57] Dimensions de l'écran fournies par le pilote:
[14 :20 :57] =================================================
[14 :20 :57] Width, in millimeters, of the physical screen
[14 :20 :57] 677
[14 :20 :57] Height, in millimeters, of the physical screen
[14 :20 :57] 381
[14 :20 :57]
[14 :20 :57] Dimensions calculées de l'écran :
[14 :20 :57] =================================================
[14 :20 :57] Longeur écran calculé en cm: 50.8
[14 :20 :57] Hauteur écran calculé en cm: 28.575
[14 :20 :57]
ne marche pas non plus en 120 Dpi
[14 :24 :45] Résolution:
[14 :24 :45] ========================
[14 :24 :45] Width, in pixels, of the screen
[14 :24 :45] 1920
[14 :24 :45] Height, in raster lines, of the screen
[14 :24 :45] 1080
[14 :24 :45]
[14 :24 :45] DPI:
[14 :24 :45] ========================
[14 :24 :45] Number of pixels per logical inch along the screen width
[14 :24 :45] 120
[14 :24 :45] Number of pixels per logical inch along the screen height
[14 :24 :45] 120
[14 :24 :45]
[14 :24 :45] Dimensions de l'écran fournies par le pilote:
[14 :24 :45] =================================================
[14 :24 :45] Width, in millimeters, of the physical screen
[14 :24 :45] 677
[14 :24 :45] Height, in millimeters, of the physical screen
[14 :24 :45] 381
[14 :24 :45]
[14 :24 :45] Dimensions calculées de l'écran :
[14 :24 :45] =================================================
[14 :24 :45] Longeur écran calculé en cm: 63.5
[14 :24 :45] Hauteur écran calculé en cm: 35.71875
[14 :24 :45]
mon ecran fait 38.2 de large par 21.50 de haut (comme Fig) .. mais je n'obtient pas ses résultats :)