votre écran mesure Ht x mm larg y mm

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

votre écran mesure Ht x mm larg y mm

Message 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
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

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

Message 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 !
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

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

Message 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:
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

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

Message 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:
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

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

Message 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"
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

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

Message 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
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

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

Message 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:
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

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

Message 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.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

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

Message 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 ... :)
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

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

Message 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. :?: :(
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

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

Message 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 )
Dernière modification par Backup le ven. 14/févr./2014 11:16, modifié 2 fois.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

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

Message par falsam »

Merci pour ton code Poshu qui mérite un Like+ :)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

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

Message 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.
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

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

Message 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 ? :?
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

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

Message 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 :)
Répondre