Delphi-PRAXiS
Seite 2 von 2     12   

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)

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 15:01 Uhr.
Seite 2 von 2     12   

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