Freigeben über


Skalieren des Desktopimages

Dieses Thema gilt nur für Windows 7 und höher sowie Windows Server 2008 R2 und höhere Versionen des Windows-Betriebssystems.

Funktionsweise der Skalierung

Ein Aufrufer kann die Funktion SetDisplayConfig Connecting and Configuring Displays (CCD) verwenden, um das Desktopbild auf den Monitor zu skalieren:

  • Wenn Desktop und Monitor dieselbe Auflösung verwenden, ist SetDisplayConfig nicht erforderlich, um das Desktopimage auf den Monitor zu skalieren. Dieser SetDisplayConfig-Vorgang wird als Identitätsskalierung bezeichnet.

  • Wenn sich die Desktop- und Monitorauflösung unterscheiden, wendet SetDisplayConfig eine der folgenden Skalierungstypen an. Die Monitorauflösung wird durch die DISPLAYCONFIG_TARGET_MODE-Struktur definiert.

    • Zentrierte Skalierung

      Die zentrierte Skalierung ist ein Modus, in dem der Desktop auf dem Monitor ohne Skalierung angezeigt wird. Wenn SetDisplayConfig die zentrierte Skalierung anwendet, sind über und unter dem Desktop möglicherweise schwarze Bänder sichtbar. Die folgende Abbildung zeigt die zentrierte Skalierung.

      Diagramm: zentrierte Skalierung mit schwarzen Bändern oberhalb und unterhalb des Desktops

    • Gestreckte Skalierung

      Die gestreckte Skalierung ist ein Modus, in dem der Desktop horizontal und vertikal auf dem Monitor gestreckt wird, um sicherzustellen, dass die gesamte Anzeige verwendet wird. Wenn SetDisplayConfig die gestreckte Skalierung anwendet, sind keine schwarzen Bänder über und unter dem Desktop sichtbar. Der Desktop kann jedoch verzerrt erscheinen. Die folgende Abbildung zeigt die gestreckte Skalierung.

      Diagramm: Gestreckte Skalierung, bei der der Desktop die gesamte Anzeige füllt.

    • Seitenverhältnis erhaltend gestreckt

      Die gestreckte Skalierung im Seitenverhältnis ist ein Modus, in dem der Desktop so weit wie möglich horizontal und vertikal gestreckt wird, während das Seitenverhältnis beibehalten wird. Wenn SetDisplayConfig gestreckte Skalierung im Seitenverhältnis verwendet, können schwarze Bänder entweder oberhalb und unterhalb oder links und rechts des Desktops sichtbar sein. Schwarze Bänder können jedoch nicht sowohl oberhalb als auch unterhalb und links und rechts des Desktops sichtbar sein. Da von Benutzern erwartet wird, dass sie diese Art der Skalierung bevorzugen, wendet SetDisplayConfig diese Art der Skalierung als Standard an. Die folgende Abbildung zeigt die gestreckte Skalierung im Seitenverhältnis.

      Diagramm: Seitenverhältnis beibehaltende gestreckte Skalierung mit schwarzen Bändern auf der Seite oder oberhalb und unterhalb des Desktops.

Die Skalierung hängt von den Quell- und Zielmodi ab, die für einen Pfad verwendet werden. Darüber hinaus kann der Aufrufer SetDisplayConfig aufrufen, ohne die Zielmodusinformationen anzugeben (das heißt, das Festlegen des modeInfoArray-Parameters ist optional und kann auf NULL festgelegt werden). Dies bedeutet, dass der Aufrufer in der Regel nicht vorhersagen kann, ob SetDisplayConfig eine Skalierung durchführen muss. Darüber hinaus ist keine API vorhanden, um die vollständige Liste der Skalierungstypen abzurufen, die der Grafikkarte unterstützt. Die EnumDisplaySettings Win32-Funktion gibt DMDFO_DEFAULT im dmDisplayFixedOutput-Member der DEVMODE-Struktur zurück, auf den der lpDevMode-Parameter verweist, wenn der Aufrufer die Windows 7-Skalierungstypen anfordert.

Die Skalierung, die ein Aufrufer an SetDisplayConfig übergibt, ist eine Skalierungsabsicht und keine explizite Anforderung zum Ausführen eines Skalierungsvorgangs. Wenn eine Skalierung erforderlich ist (z. B. unterscheiden sich die Quell- und Zielauflösungen), verwendet SetDisplayConfig die Skalierung, die der Aufrufer bereitstellt. Wenn die angegebene Skalierung nicht unterstützt wird, verwendet SetDisplayConfig die Standardskalierung des Grafikkarten. Wenn die Quell- und Zielauflösungen, die der Aufrufer an SetDisplayConfig übergibt, identisch sind, legt SetDisplayConfig immer die Identitätsskalierung fest.

Skalierungsanforderungen

Die folgende Tabelle zeigt die verschiedenen SetDisplayConfig-Skalierungsanforderungen und identifiziert die abgekürzte Nomenklatur, die in den Tabellen in den folgenden Unterabschnitten verwendet wird. Definitionen der DISPLAYCONFIG_SCALING_XXX-Werte finden Sie unter DISPLAYCONFIG_SCALING.

Skalierungsanforderung Abgekürzte Nomenklatur, die in den folgenden Tabellen verwendet wird
DISPLAYCONFIG_SCALING_IDENTITY DC_IDENTITY
DISPLAYCONFIG_SCALING_CENTERED DC_CENTERED
DISPLAYCONFIG_SCALING_STRETCHED DC_STRETCHED
DISPLAYCONFIG_SCALING_ASPECTRATIOCENTEREDMAX DC_ASPECTRATIOCENTEREDMAX
DISPLAYCONFIG_SCALING_CUSTOM DC_CUSTOM
DISPLAYCONFIG_SCALING_PREFERRED DC_PREFERRED
Der Standardskalierungswert des Adapters. Derzeit ist die Standardeinstellung auf Tablet-Systemen gestreckt. Auf Nicht-Tablet-Systemen mit Grafikkarten, die das Windows Display Driver Model (WDDM) unterstützen, wird der Standardwert vom Treiber definiert. Auf Nicht-Tablet-Systemen mit Grafikkarten, die WDDM mit neuen Features für Windows 7 unterstützen, ist die Standardeinstellung DC_ASPECTRATIOCENTEREDMAX. AdapterDefault
Der Skalierungswert aus der Datenbank für die aktuell verbundenen Monitore DatabaseValue

SetDisplayConfig-Skalierungsanforderungen

Die folgende Tabelle zeigt die Werte, die in der Datenbank gespeichert werden, und die Werte, die tatsächlich festgelegt werden, wobei:

  • "Set (same)" und "Store (same)" sind die Set- und Speicherwerte, wenn der resultierende Quellmodus und der Zielmodus die gleiche Auflösung aufweisen.
  • "Set (different)" und "Store (different)" sind die Set- und Speicherwerte, wenn der resultierende Quellmodus und der Zielmodus unterschiedliche Auflösungen aufweisen.
An SetDisplayConfig übergebenes Skalierungsflag Set (gleich) Store (identisch) Set (anders) Set (anders)
DC_IDENTITY aktuelle Konfiguration nicht in Der Datenbank DC_IDENTITY AdapterDefault AdapterDefault AdapterDefault
DC_IDENTITY aktuelle Konfiguration in Db DC_IDENTITY DatabaseValue DatabaseValue DatabaseValue
DC_CENTERED DC_IDENTITY DC_CENTERED DC_CENTERED DC_CENTERED
DC_STRETCHED DC_IDENTITY DC_STRETCHED DC_STRETCHED DC_STRETCHED
DC_ASPECTRATIOCENTEREDMAX auf WDDM mit Windows 7-Featuretreiber DC_IDENTITY DC_ASPRATIOMAX DC_ASPRATIOMAX DC_ASPRATIOMAX
DC_ASPECTRATIOCENTEREDMAX auf dem WDDM-Treiber DC_IDENTITY AdapterDefault AdapterDefault AdapterDefault
DC_CUSTOM auf WDDM mit Windows 7-Featurestreiber, der die benutzerdefinierte Skalierung im Pfad unterstützt DC_CUSTOM DC_CUSTOM DC_CUSTOM DC_CUSTOM
DC_CUSTOM in WDDM mit Windows 7-Featuretreiber, der keine benutzerdefinierte Skalierung im Pfad unterstützt DC_IDENTITY AdapterDefault AdapterDefault AdapterDefault
DC_CUSTOM auf dem WDDM-Treiber DC_IDENTITY AdapterDefault AdapterDefault AdapterDefault
DC_PREFERRED aktuelle Konfiguration nicht in der Datenbank DC_IDENTITY AdapterDefault AdapterDefault AdapterDefault
DC_PREFERRED aktuelle Konfiguration in Db DC_IDENTITY DatabaseValue DatabaseValue DatabaseValue

Legacy ChangeDisplaySettingsEx-Skalierungsanforderungen

Die folgende Tabelle zeigt, wie die Skalierung, die ein Aufrufer an die Legacy-ChangeDisplaySettingsEx-API übergeben kann, dem Skalierungssatz zugeordnet wird, wobei:

  • "Set (same)" und "Store (same)" sind die Set- und Speicherwerte, wenn der resultierende Quellmodus und der Zielmodus die gleiche Auflösung aufweisen.
  • "Set (different)" und "Store (different)" sind die Set- und Speicherwerte, wenn der resultierende Quellmodus und der Zielmodus unterschiedliche Auflösungen aufweisen.
Skalierungsflagge, das an ChangeDisplaySettingsEx übergeben wurde Set (gleich) Store (identisch) Set (anders) Set (anders)
DMDFO_DEFAULT mit der aktuellen Konfiguration nicht in der CCD-Datenbank DC_IDENTITY AdapterDefault AdapterDefault AdapterDefault
DMDFO_DEFAULT mit der aktuellen Konfiguration in der CCD-Datenbank DC_IDENTITY DatabaseValue DatabaseValue DatabaseValue
DMDFO_STRETCH DC_IDENTITY DC_STRETCHED DC_STRETCHED DC_STRETCHED
DMDFO_CENTER DC_IDENTITY DC_CENTERED DC_CENTERED DC_CENTERED
DM_DISPLAYFIXEDOUTPUT nicht festgelegt, aktuelle Konfiguration nicht in der CCD-Datenbank DC_IDENTITY AdapterDefault AdapterDefault AdapterDefault
DM_DISPLAYFIXEDOUTPUT nicht festgelegt, aktuelle Konfiguration in der CCD-Datenbank DC_IDENTITY DatabaseValue DatabaseValue DatabaseValue

Skalierungsübersetzung von Legacy EnumDisplaySettings

Die folgende Tabelle zeigt, wie die Skalierung der Anzeigekonfiguration übersetzt und von EnumDisplaySettings zurückgegeben wird.

Aktuelle aktive Skalierung GDI-Skalierungswerte, die von legacy EnumDisplaySettings(ENUM_CURRENT_SETTINGS) zurückgegeben wurden
DC_IDENTITY DMDFO_DEFAULT
DC_CENTERED DMDFO_CENTER
DC_STRETCHED DMDFO_STRETCH
DC_ASPRATIOMAX DMDFO_DEFAULT
DC_CUSTOM DMDFO_DEFAULT
DC_PREFERRED DMDFO_DEFAULT

DirectX-Spiele und -Skalierung

Microsoft DirectX 9L und frühere Runtimes erfordern, dass Anwendungen immer die ChangeDisplaySettingsEx-Funktion aufrufen, ohne DM_DISPLAYFIXEDOUTPUT im dmFields-Member der DEVMODE-Struktur festgelegt ist, auf die der lpDevMode-Parameter verweist. Mit DirectX 10 und höher können Anwendungen die Skalierung auswählen, die diese Anwendungen an ChangeDisplaySettingsEx übergeben. Die folgende Tabelle zeigt die Zuordnung von Skalierungswerten zu Skalierungsflags, die an ChangeDisplaySettingsEx übergeben werden.

DXGI-Wert für die Flip chain-Skalierung Skalierungsflags, die an ChangeDisplaySettingsEx übergeben werden
DXGI_MODE_SCALING_UNSPECIFIED DMDFO_DEFAULT, DMDFO_CENTER oder DMDFO_STRETCH. Die Skalierung, die Anwendungen verwenden, hängt von mehreren Faktoren ab, darunter die aktuelle Desktopskalierung und die Vom Treiber verfügbar gemachte Modusliste.
DXGI_MODE_SCALING_CENTERED DMDFO_CENTER
DXGI_MODE_SCALING_STRETCHED DMDFO_STRETCH

Mithilfe dieser Informationen in Kombination mit den vorherigen Skalierungstabellen können Sie die erwartete Skalierung einer DirectX-Anwendung ermitteln.