DPI-bezogene APIs und Registrierungseinstellungen
Die folgenden Abschnitte erläutern Registrierungsschlüssel und Systemparameter, auf die Ihre Postinstallationsskripts möglicherweise zugreifen müssen.
In diesem Artikel:
Native Auflösung der primären Anzeige
Tabelle 1 – Windows 8.1-Skalierungsstufen enthält Informationen zur Windows 8.1-Skalierungsstufe für eine Reihe gängiger Displays. Panel DPI gibt die physische Pixeldichte des Panels an, und die Skalierungsstufe gibt den Skalierungsfaktor an, der für diese Anzeige verwendet wird.
Tabelle 1 – Windows 8.1-Skalierungsstufen
Anzeigegröße | Anzeigeauflösung | Horizontal (Pixel) | Vertikal (Pixel) | Panel-DPI | Skalierungsstufe |
---|---|---|---|---|---|
10,6 Zoll | FHD | 1920 | 1080 | 208 | 150% |
10,6 Zoll | Festplatte | 1366 | 768 | 148 | 100 % |
11,6 Zoll | WUXGA | 1920 | 1200 | 195 | 150% |
11,6 Zoll | Festplatte | 1366 | 768 | 135 | 100 % |
13,3 Zoll | WUXGA | 1920 | 1200 | 170 | 150% |
13,3 Zoll | QHD | 2560 | 1440 | 221 | 200 % |
13,3 Zoll | Festplatte | 1366 | 768 | 118 | 100 % |
15,4 Zoll | FHD | 1920 | 1080 | 143 | 125% |
15,6 Zoll | QHD+ | 3200 | 1800 | 235 | 200 % |
17 Zoll | FHD | 1920 | 1080 | 130 | 125% |
23 Zoll | QFHD (4K) | 3840 | 2160 | 192 | 200 % |
24 Zoll | QHD | 2560 | 1440 | 122 | 125% |
Um diese Informationen für jedes Gerät programmgesteuert zu finden, können Sie ein Hilfsprogramm schreiben, das Daten zurückmeldet. Die native primäre Auflösung wird abgerufen, indem die API-Funktion GetDeviceCaps() aufgerufen wird, wobei der hdc für den Desktop sowie die Indizes HORZRES und VERTRES verwendet werden:
// Get desktop dc
desktopDc = GetDC(NULL);
// Get native resolution
horizontalResolution = GetDeviceCaps(desktopDc,HORZRES);
verticalResolution = GetDeviceCaps(desktopDc,VERTRES);
Weitere Informationen zu GetDC finden Sie unter GetDC()-Funktion.
DPI-Skalierungsfaktor der primären Anzeige
Ebenso können Sie die Pixeldichte mithilfe der LOGPIXELSX- und LOGPIXELSY-Indizes abrufen:
// Get desktop dc
desktopDc = GetDC(NULL);
// Get native resolution
horizontalDPI = GetDeviceCaps(desktopDc,LOGPIXELSX);
verticalDPI = GetDeviceCaps(desktopDc,LOGPIXELSY);
Diese Ergebnisse werden in einem Koordinatensystem zurückgegeben, in dem 96 ppi 100 % entspricht, wie in Tabelle 2 – DPI-Skalierungsfaktoren dargestellt.
Tabelle 2 – DPI-Skalierungsfaktoren
DPI | Skalierungsfaktor |
---|---|
96 | 100 |
120 | 125 |
144 | 150 |
192 | 200 |
Hinweis
Diese API gibt je nach DPI-Erkennungsmodus Ihrer Anwendung unterschiedliche Ergebnisse zurück. Das Konfigurieren des Erkennungsmodus erfordert das Hinzufügen von XML zum Anwendungsmanifest, wie unten beschrieben:
DPI-Erkennungsmodus | Manifesteinstellung | Rückgabewert |
---|---|---|
Keine | Keine | 96 für alle Displays unabhängig vom Skalierungsfaktor |
System-DPI-Erkennung | <dpiAware>True</dpiAware> | Der DPI-Wert der primären Anzeige zur Zeit, zu der die Windows-Sitzung gestartet wurde (als der Benutzer sich zum ersten Mal bei Windows angemeldet hat) |
Monitorspezifische DPI-Erkennung | <dpiAware>True/PM</dpiAware> | Der DPI-Wert der primären Anzeige zur Zeit, zu der die Windows-Sitzung gestartet wurde (als der Benutzer sich zum ersten Mal bei Windows angemeldet hat). Um den DPI-Wert der Anzeige abzurufen, auf der sich die Anwendung befindet, verwenden Sie GetWindowDpi() oder GetDpiForMonitor(). |
Weitere Informationen zu dieser Manifesteinstellung finden Sie unter SetProcessDPIAware-Funktion.
Skalierungsmodus
Die Benutzeroberfläche Systemsteuerung\Darstellung und Personalisierung\Anzeige enthält das Kontrollkästchen Lassen Sie mich eine Skalierungsstufe für alle meine Displays auswählen, die steuert, ob das System einen einzelnen Skalierungsfaktor auf alle Displays anwendet (wie in Windows 8 und früheren Versionen von Windows) oder verschiedene Skalierungsfaktoren, die die Pixeldichte jeder Anzeige berücksichtigen (die Windows 8.1 Standardeinstellung). Dieses Kontrollkästchen konfiguriert den Registrierungsschlüssel HKCU\Systemsteuerung\Desktop\Win8DpiScaling in Windows 8.1.
Tabelle 3 – HKCU\Systemsteuerung\Desktop\Win8DpiScaling Values
Schlüsselwert | Bedeutung |
---|---|
0 | Verschiedene Skalierungsfaktoren für jede Anzeige: Windows 8.1 Standard. Inhalte, die von einer Anzeige in eine andere verschoben werden, werden in der richtigen Größe dargestellt, jedoch wird dies teils durch Skalierung von Bitmaps erreicht. |
1 | Der gleiche Skalierungsfaktor wird auf alle Displays angewendet: Verhalten von Windows 8 und früheren Windows-Versionen. Inhalte, die von einer Anzeige in eine andere verschoben werden, werden möglicherweise in der falschen Größe dargestellt. |
Skalierungsaußerkraftsetzung im Windows 8.1-Skalierungsmodus
Wenn das Kontrollkästchen Lassen Sie mich eine Skalierungsstufe für alle meine Anzeigen auswählen aktivieren deaktiviert ist und das System im Windows 8.1-Skalierungsmodus ausgeführt wird, wird dem Benutzer ein Schieberegler bereitgestellt, mit dem sie die aktuellen Skalierungsfaktoren außer Kraft setzen können, von „Kleiner“ über „Mittel“ bis „Größer“. Diese Einstellung ist im Registrierungsschlüssel HKCU\Systemsteuerung\Desktop\DesktopDPIOverride konfiguriert.
Tabelle 4 – HKCU\Systemsteuerung\Desktop\DesktopDPIOverride-Werte
Schlüsselwert | Bedeutung |
---|---|
<0 | Verringern von jeden Skalierungsfaktor vom Standardwert um diesen Wert (wenn z. B. die Standardskalierung 150 % betrug, würde -1 sie auf 125 % ändern oder -2 auf 100 %). |
0 | Verwenden Sie den Standardwert für jede Anzeige. |
0> | Erhöhen von jedem Anzeigefaktor um diesen Wert (wie beim vorherigen Beispiel entspricht +1 der Skalierung 200 %). |
Alle Anzeigeskalafaktoren in diesem Modus sind auf einen der folgenden vier Werte beschränkt: 100 %, 125 %, 150 %, 200 %. Darüber hinaus erwarten Anwendungen nach dem Anwenden der Skalierung mindestens 720 effektive Auflösungslinien (also die physische vertikale Auflösung der Anzeige, die durch den Skalierungsfaktor geteilt wird); Dies kann den Bereich der zulässigen Anzeigeskalierungsfaktoren weiter einschränken. Tabelle 5 – Anzeigewerte zeigen an, welche Werte für unterschiedliche große Displays zulässig sind:
Tabelle 5 – Anzeigewerte
Vertikale Linien | Unterstützte Skalierungsfaktoren |
---|---|
<900 | 100 % |
>= 900 und <1080 | 100 %, 125 % |
>= 1080 und <1440 | 100 %, 125 %, 150 % |
>= 1440 | 100 %, 125 %, 150 %, 200 % |
Systemweiter Skalierungsfaktor im Windows 8-Skalierungsmodus
Wenn die Lassen Sie mich eine Skalierungsstufe für alle meine Anzeigen auswählen aktivieren aktiviert ist, kann der Benutzer einen Skalierungsfaktor angeben, der für alle Displays gilt, unabhängig von der Pixeldichte der einzelnen Displays. Mithilfe der benutzerdefinierten Einstellung kann der Benutzer andere Werte als 100 %, 125 %, 150 %, 200 % auswählen, auch wenn sie auf den Bereich von 100 % – 500 % beschränkt sind (). Diese Einstellung ist im Registrierungsschlüssel HKCU\Control Panel\Desktop\LogPixels konfiguriert.
Tabelle 6 – HKCU\Systemsteuerung\Desktop\LogPixels-Werte
Schlüsselwert | Bedeutung |
---|---|
96 | Skalierung von 100 % auf jedem Bildschirm |
120 | Skalierung von 125 % auf jedem Bildschirm |
144 | Skalierung von 150 % auf jedem Bildschirm |
192 | Skalierung von 200 % auf jedem Bildschirm |
<other> | <other> Skalierung von 96/100 % auf jedem Bildschirm |
Verwandte Artikel
Dokumentation zum Entwickeln von Anwendungen mit hohem DPI-Wert