Unter Windows-PC-Anzeigen verweise ich nicht auf Windows CE oder Handhelds usw.
Erläuterung
Einige Leute unten irrten irrtümlicherweise, dass ich fragte, was die DPI (Punkte pro Zoll) auf Monitoren war. Was ich möchte, ist der Wert für LogPixelsX im GetCaps API-Aufruf:
LOGPIXELSX Anzahl der Pixel pro logischem Zoll entlang der Bildschirmbreite.
In den Beispielen, die ich gesehen habe, ist es auf 88 gesetzt, ungeachtet des Bildschirms DPI. Scheint eine Art magische Konstante zu sein.
In einem verwandten Frage Ich benutze GetDeviceCaps, um die aktuelle Bildschirmschrift DPI zu berechnen. Die Code-Beispiele, die ich gefunden habe, haben alle:
Const LOGPIXELSX = 88
Ist das bei allen Monitoren (auch bei Widescreen-Monitoren) gleich? Und wenn nicht, wie finde ich es für die aktuelle Anzeige. (MSDN gibt an, dass es für alle Monitore auf einem bestimmten Computer identisch ist.
In einem System mit mehreren Monitoren ist dieser Wert für alle Monitore gleich.
Um Ihre Klärung der Frage zu beantworten:
LOGPIXELSX ist der Parameter, den Sie an GetDeviceCaps übergeben, um die aktuelle Monitorauflösung zu erhalten (technisch gesehen die horizontale Auflösung, aber alle modernen Displays haben die gleiche horizontale und vertikale Auflösung). Ja, es ist immer 88 - Wenn Sie einen anderen Wert von GetDeviceCaps erhalten möchten, geben Sie einen anderen Wert ein. Um beispielsweise die Anzahl der Bits pro Pixel zu erhalten, übergeben Sie die BITSPIXEL-Konstante, die 12 ist. Diese magischen Konstanten sind in der Windows-API-Datei WINGDI.h definiert.
Die Notiz in MSDN bezieht sich nicht auf den Parameter, sondern auf den zurückgegebenen Wert.
Windows wird immer 96 DPI für die Auflösung haben, es sei denn, Sie ändern es in den Anzeigeeinstellungen. Unter XP finden Sie es im Dialogfeld Erweitert unter Eigenschaften von Anzeige- & gt; Einstellungen; Ich weiß nicht, wo es in anderen Windows-Versionen gefunden wurde.
Sie haben Recht, dass GetDeviceCaps (LOGPIXELSX) die DPI zurückgibt, abgesehen von einem kleinen Vorbehalt. Ab Windows Vista könnte Windows Sie über Ihre tatsächlich konfigurierte Auflösung belügen. Sie müssen Ihre Anwendung DPI-fähig machen, um ein wahres Bild der Konfiguration zu erhalten. Hier ist eine Microsoft-Seite mit einigen Details, mit besonderem Schwerpunkt auf Änderungen in Windows 7.
Und ein weiterer Link:
Siehe SetProcessDPIAware () (für Vista) und GetDeviceCaps (...) um die DPI zu erhalten.
XP hat 96 oder 120 dpi. Vista hat eigentlich einen Schieberegler, um durch ein "Kontinuum" von DPI-Einstellungen anzupassen. Unter Vista kümmert sich der DWM um die Skalierung Ihrer Apps, sofern Sie nicht ausdrücklich darauf hinweisen, dass Sie DPI-fähig sind. Für XP sollten Sie sowohl für 96 als auch für 120 planen.
Für den Fall des Bildes, Bildauflösung (DPIX, DPIY) ist eine andere konstante Bildschirmauflösung zu nehmen.Tippen zur Pixelumwandlung für Bild-dpi erfolgt als:
%Vor%Die beiden Standard-DPI-Einstellungen in Windows sind 96 dpi (Normalgröße) und 120 dpi (Großformat). Ich bin mir sicher, dass es einen Win32-Aufruf für diese Einstellung gibt, aber ich bin mir nicht sicher, wo ich Sie hinleiten soll . MSDN kann Ihre Antwort haben.
edit: Ich sollte klarstellen, dass ich unter Windows Windows XP verstehe