Wie Ermittle ich den wahren Pixelgröße von meinem Monitor .NET?
Ich möchte ein Bild anzeigen, bei "wahre Größe" in meiner Anwendung. Für das, dass ich wissen muss, um die pixel-Größe des Displays.
Ich weiß windows display-Auflösung ist nominell 96dpi, aber für meine Zwecke möchte ich eine bessere Schätzung. Ich verstehe diese Angaben möglicherweise nicht immer verfügbar oder korrekt (z.B. ältere CRT-Monitoren), aber ich kann mir vorstellen mit der prevelance von LCD-displays, dies sollte möglich sein!
Ist es ein Weg, um die pixel-Größe von meinem display?
Gibt es eine Möglichkeit zu bestimmen, ob die pixel Größe ist das genau?
.NET-API ' s bevorzugt (ich konnte Sie nicht finden), aber Win32 ist auch OK, ich bin froh, dass P/Invoke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für die display-Größe Sie wollen
Screen
.PrimaryScreen.Bounds.Size
(oderScreen.GetBounds(myform)
).Wenn Sie möchten, dass der DPI-Wert, verwenden Sie die DpiX und DpiY Eigenschaften Grafik:
Oh, warten Sie! Sie wollte tatsächlich, halten Sie ein Lineal bis zu dem überwachen und Messen, die Größe?! Nein. Nicht möglich mit alle OS services. Das OS kennt Sie nicht, die tatsächlichen Dimensionen des Monitors, oder, wie der Benutzer es kalibriert. Einige dieser Informationen ist theoretisch nachweisbar, aber es ist nicht deterministisch genug für das OS zu verwenden, zuverlässig, so ist es nicht.
Als ein umgehen, können Sie versuchen, ein paar Dinge.
Sobald Sie wissen (oder denke Sie wissen) monitor Diagonale, müssen Sie zu finden, seine körperlichen Aspekt-Verhältnis. Wieder ein paar Dinge:
Sobald Sie wissen (oder denke Sie wissen), was den monitor aus Diagonale und physischen Aspekt-Verhältnis sind, dann müssen Sie Sie berechnen können, es ist die physische Breite und Höhe. Eine2 + B2 = C2, so ein paar Berechnungen wird es geben, um Sie gut:
Diese stellt die physische Breite an 13.27" und die physische Höhe am 10.62". Das macht die Pixel 13.27" /1280 = 10.62" /1024 = 0.01037" oder über 0.263 mm.
Natürlich, all dies ist ungültig, wenn der Benutzer nicht über eine geeignete Auflösung, die der monitor hat verrückte non-square Pixel, oder es ist eine ältere analoge monitor und die Bedienelemente sind nicht richtig eingestellt für die Anzeige zu füllen, die den gesamten physischen Bildschirm ein. Oder noch schlimmer, es könnte ein Projektor.
In das Ende können Sie am besten ab, die Durchführung einer Kalibrierung, wo Sie der Benutzer eigentlich halten Sie ein Lineal bis zu dem Bildschirm, und Messen der Größe etwas für Sie. Sie könnten:
Egal, was Sie tun, erwarten Sie nicht, Ihre Ergebnisse zu 100% korrekt. Es gibt viel zu viele Faktoren spielen für Sie (oder der Benutzer) bekommen genau das richtige, zu jeder Zeit.
Sich bewusst sein, dass 96 dpi ist in der Regel ziemlich nah zu genau. Moderne Pixel auf nicht-projizierten Bildschirme neigen dazu, werden über 0,25 mm, geben oder nehmen, so dass Sie in der Regel mit über 100 physikalischen Pixel pro Zoll geben oder nehmen, wenn der monitor auf die systemeigene Auflösung festgelegt. (Natürlich, dies ist eine riesige Verallgemeinerung und nicht nicht gelten für alle Monitore. Eee-PCs, zum Beispiel, haben Pixel ungefähr 0.19 mm in der Größe, wenn ich erinnere mich an die specs richtig.)
sorry, du hast zu P/Invoke für diese Informationen.
Hier ist der link, den ich genutzt, für die es vor einer Weile:
http://www.davidthielen.info/programming/2007/05/get_screen_dpi_.html
Können Sie überprüfen, indem Sie einfach die manuelle Berechnung von Ihrem Bildschirm-Größe
Geben Sie die pixel-Breite in Zoll
GetDeviceCaps
werden kann, P/Invoke, würde man einige zahlen, aber ich habe nie gewusst, die Figuren zu werden, die vertrauenswürdig...Erhalten Sie möglicherweise die physischen Dimensionen des Displays mit den EDID-Informationen in der Registrierung gespeichert. Sie erhalten die entsprechende monitor-Registrierungsschlüssel mithilfe der EnumDisplayDevices windows-API-Aufruf.
Abmessungen der Screen-Objekt: