Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Die größe eines Monitors ermitteln (nicht Pixel) (https://www.delphipraxis.net/196333-die-groesse-eines-monitors-ermitteln-nicht-pixel.html)

Alallart 12. Mai 2018 21:25

Die größe eines Monitors ermitteln (nicht Pixel)
 
Bevor ich mich auf die Suche mache, denn auf die Schnelle habe ich nichts gefunden, wollte ich mal fragen ob einer weiß ob man die Größe eines Monitors irgendwo im System auslesen kann, vorausgesetzt das System weiß sowas. Da heute dank P&P vieles ausgelesen werden kann, frage ich mich ob auch die Größe irgendwo angegeben ist, also z. B. 24" bzw. im Cm.

Ich meine damit nicht die Pixel Breite und Höhe. Ich brauche die Breite und Höhe in Zentimeter.

KodeZwerg 12. Mai 2018 21:43

AW: Die größe eines Monitors ermitteln (nicht Pixel)
 
Delphi-Quellcode:
HKEY_LOCAL_MACHINE/System/ControlSet001/Enum/DISPLAY/
ControlSet002, ControlSet003 usw.
Das bildet den Einstieg in die Systemregistrierung.

Die Windows-Api hat auch ein paar nützliche Befehle:
EnumDisplayMonitors(), GetMonitorInfo(), MonitorFromWindow(), EnumDisplayDevices(), DeviceCapabilities(), GetDeviceCaps() usw.

ABER die tatsächliche Dimension des verbauten Panels bekommst Du glaube ich nur über den Treiber heraus.
Mir ist keine Methode/Funktion bekannt die das auswertet.

Es gibt ja auch keinen Befehl mir die Dimension meines PC-Gehäuse auszuwerten oder wie groß der Raum ist in dem der PC steht.

hstreicher 13. Mai 2018 07:19

AW: Die größe eines Monitors ermitteln (nicht Pixel)
 
Auflösungen / DPI = Abmessungen

KodeZwerg 13. Mai 2018 07:31

AW: Die größe eines Monitors ermitteln (nicht Pixel)
 
34" @ 21:9 @ 3440x1440 @ 96dpi
Es ist wahrscheinlich noch etwas früh aber wie wende ich jetzt genau Deine Formel an um als Ergebnis = 34 zu erhalten?

haentschman 13. Mai 2018 07:33

AW: Die größe eines Monitors ermitteln (nicht Pixel)
 
Moin...:P
Zitat:

Ich brauche die Breite und Höhe in Zentimeter.
Ich fürchte das Vorhaben ist nicht realisierbar. :roll: Mein Yoga (10 Zoll) hat exakt die gleiche Auflösung(1980x200) und DPI wie mein 24"er auf dem Schreibtisch...offensichtlich sind die nicht gleich groß. :stupid:

KodeZwerg 13. Mai 2018 07:43

AW: Die größe eines Monitors ermitteln (nicht Pixel)
 
Zitat:

Zitat von haentschman (Beitrag 1401951)
1980x200

Guten Morgen, wach werden ^_^
Ich geh mal von 1980x1080 aus hehe

haentschman 13. Mai 2018 07:56

AW: Die größe eines Monitors ermitteln (nicht Pixel)
 
Zitat:

Ich geh mal von 1980x1080 aus hehe
1980x1200...ich sollte mal die Batterien wechseln. :wink:

KodeZwerg 13. Mai 2018 08:15

AW: Die größe eines Monitors ermitteln (nicht Pixel)
 
Ich habe mal etwas rumexperimentiert aber komme auf keinen grünen Zweig
Bei mir lt. Panel-Beschreibung: 34" = 86.36 cm, so aufgeteilt 796.63 mm x 333.46 mm

pixels-x-to-centimeters-conversion
3440 px ergibt 91.02 cm
1440 px ergibt 38.10 cm

Ich komme hier auf keinen Nenner. Ich vermute die Lochmaske/Pixel-Pitch bestimmt die tatsächliche Dimension des Panels wobei man dann noch das Gehäuse mitrechnen muss.

blawen 13. Mai 2018 09:06

AW: Die größe eines Monitors ermitteln (nicht Pixel)
 
Zitat:

Zitat von KodeZwerg (Beitrag 1401954)
Ich habe mal etwas rumexperimentiert aber komme auf keinen grünen Zweig
Bei mir lt. Panel-Beschreibung: 34" = 86.36 cm, so aufgeteilt 796.63 mm x 333.46 mm

pixels-x-to-centimeters-conversion
3440 px ergibt 91.02 cm
1440 px ergibt 38.10 cm

Ich komme hier auf keinen Nenner. Ich vermute die Lochmaske/Pixel-Pitch bestimmt die tatsächliche Dimension des Panels wobei man dann noch das Gehäuse mitrechnen muss.

Effektiv kannst Du auf der gleichen Fläche unterschiedliche Anzahl Pixel haben (z.B. HD/4k). Sofern die physikalische Grösse der Pixel nicht bekannt ist, ist es unmöglich, die genaue Displaygrösse zu bestimmen.

mkinzler 13. Mai 2018 09:14

AW: Die größe eines Monitors ermitteln (nicht Pixel)
 
Die Berechnung bezieht sich auf eine feste Pixeldichte. Diese unterscheidet sich aber von Bildschrm zu Bildschirm. Ein 24 Zoll Bildschirm in FullHD ist nunmal größer als eine 4 Zoll FullHD-Handy.

KodeZwerg 13. Mai 2018 09:15

AW: Die größe eines Monitors ermitteln (nicht Pixel)
 
Zitat:

Zitat von blawen (Beitrag 1401958)
Effektiv kannst Du auf der gleichen Fläche unterschiedliche Anzahl Pixel haben (z.B. HD/4k).

Ja, per DPI = Skalierung der Pixel.
Zitat:

Zitat von blawen (Beitrag 1401958)
Sofern die physikalische Grösse der Pixel nicht bekannt ist, ist es unmöglich, die genaue Displaygrösse zu bestimmen.

Das wäre ja dann die Lochmaske/Pixel-Pitch, die bestimmt ja die physikalischen Dimensionen eines Pixels.
Ich glaube nicht das ich jemals irgendwo (abseits von Treiber intern selbst) etwas gelesen habe das mir diesen Wert ermittelt, wozu auch, Display-Dimensionen sind für uns wichtig.

p80286 13. Mai 2018 10:10

AW: Die größe eines Monitors ermitteln (nicht Pixel)
 
Zitat:

Zitat von KodeZwerg (Beitrag 1401960)
Zitat:

Zitat von blawen (Beitrag 1401958)
Effektiv kannst Du auf der gleichen Fläche unterschiedliche Anzahl Pixel haben (z.B. HD/4k).

Ja, per DPI = Skalierung der Pixel.

Wobei Du beachten mußt, das MS davon ausgeht, das der Benutzer weiß welchen DPI/PPI-Wert das verwendete Display hat. Wenn er dann die Größe justiert sollte die Darstellung auf zwei unterschiedlichen Displays gleich groß sein, daß das mit der Realität wenig zu tun hat sollte eigentlich klar sein.


Gruß
K-H

himitsu 13. Mai 2018 10:15

AW: Die größe eines Monitors ermitteln (nicht Pixel)
 
DPI-Angaben bei Röhrenmonitoren oder Beamern sind eh nie genau.
HDMI zu TV-Geräten wird manchmal nochmal bissl verzehrt (Rahmen).

Und sonst sagt wohl der Treiber (INF) dem Windows was der Monitor hat und das kann man bei Windows abfragen.
Ja, das kann verändert werden und auch am Monitor kann man da oft nochmal was verstellen, was Windows dann nicht mitbekommt, aber erstmal ist das die einzige praktikable Stelle um das zu erfahren.
Du kannst natürlich über spezielle Schnittstellen direkt mit dem einigen Monitoren reden, aber wer will sowas für "alle" Monitore/Hersteller der Welt seiber bei sich einbauen?

Windows fragen und im Programm das vom User nochmals anpassen lassen können, wenn er der Meinung ist genauer einstellen zu wollen.

hstreicher 13. Mai 2018 10:39

AW: Die größe eines Monitors ermitteln (nicht Pixel)
 
Zitat:

Zitat von KodeZwerg (Beitrag 1401950)
34" @ 21:9 @ 3440x1440 @ 96dpi
Es ist wahrscheinlich noch etwas früh aber wie wende ich jetzt genau Deine Formel an um als Ergebnis = 34 zu erhalten?

also die Angaben zu den Abmessungen eines Bildschirms ist die Diagonale

also Wurzel aus (Hoehe^2 + breite^2)

Abmessungen = Sqrt( (Pixelx/Dpi)^2+(pixely/dpi)^2) // ggf mal 2.54 wenns CM sein sollen

wie genau die Angaben sind die das Betriebssytem zurückliefert kann ich nicht beurteilen

Alallart 13. Mai 2018 12:42

AW: Die größe eines Monitors ermitteln (nicht Pixel)
 
Also ich ging nicht davon aus, dass Windows es weiß, aber in den letzten Jahren hat sich viel an der Technik getan. Es gab mal eine Zeit, da waren die Monitore monodirektional, dann wurden sie bidirektional. Ich habe mich gefragt ob die inzwischen evtl. ihre Größe Windows mitteilen.

Wie mache ich es in meinem Programm aktuell? Von Hand. Da habe ich zwei Möglichkeiten, eine einfache und eine weniger einfache. Die Einfache geht über die Eingabe der Bildschirmdiagonalen. Weiß ich, dass der Monitor 24" ist und 16:9, ist die erste Formel: f = QWurzel(16² + 9²) >> f = 18,36. Damit berechne ich dann Breite = 24 / f * 16. Oder Höhe = 24 / f * 9. Ergebnisse sind in Zoll, mit 2,54 multipliziert in Zentimeter. Bei der anderen Methode wird die Bildschirmbreite und -höhe von Hand gemessen, die Rechnung bleibt aber ähnlich.

Wenn wir schon dabei sind, und weil es mich selbst interessiert, bei einem 24" Monitor ist DPI: DPI = 1920 / Breite in Zoll = 91,8. Bei 21 ist sie 104,9. Bei 27 ist sie 81,3. Also immer anders.

Zurück zur Frage. Ganz kompliziert ist es also nicht, nur die Leute, für die ich das Programm schreibe, haben keine Ahnung was eine Bildschirmdiagonale ist, oder 16:9. Ich dachte ich bekomme es einfacher raus.

KodeZwerg 13. Mai 2018 16:55

AW: Die größe eines Monitors ermitteln (nicht Pixel)
 
Zitat:

Zitat von hstreicher (Beitrag 1401966)
Abmessungen = Sqrt( (Pixelx/Dpi)^2+(pixely/dpi)^2) // ggf mal 2.54 wenns CM sein sollen

sqrt(sqr(3440 / 96) + sqr(1440 / 96)) = 38.84"
sqrt(sqr(3440 / 96) + sqr(1440 / 96)) * 2.54 = 98.67 cm

Die Formel funktioniert so nicht.
Tatsächliche Dimension: 34" = 86.36 cm, so aufgeteilt 796.63 mm x 333.46 mm

edit
Andersrum funktioniert es die Diagonale zu berechnen: sqrt(sqr(796.63) + sqr(333.46)) / 10 = 86.36 cm


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz