調整桌面映像
本主題僅適用於 Windows 7 和更新版本,以及 Windows Server 2008 R2 和更新版本的 Windows 操作系統。
縮放的運作方式
呼叫端可以使用 SetDisplayConfig 連線和設定顯示 (CCD) 函式,將桌面映像調整為監視器:
如果桌面和監視器使用相同的解析度, 則不需要 SetDisplayConfig 將桌面映像調整為監視器。 此 SetDisplayConfig 作業稱為 身分識別調整。
如果桌面和監視器解析度不同, SetDisplayConfig 會套用下列其中一種調整類型。 監視解析是由 DISPLAYCONFIG_TARGET_MODE 結構所定義。
置中調整
置中縮放是桌面在監視器上顯示的模式,完全不需要調整。 當 SetDisplayConfig 套用置中縮放比例時,黑色帶可能會顯示在桌面上方和下方。 下圖顯示置中調整。
延展式調整
延展式縮放是桌面在監視器上水準和垂直延展的模式,以確保使用整個顯示器。 當 SetDisplayConfig 套用延展式縮放時,桌面上方和下方不會顯示黑色帶。 不過,桌面可能會扭曲。 下圖顯示延展式縮放。
外觀比例保留延展
外觀比例保留延展縮放是一種模式,其中桌面會以水準和垂直方式縮放,同時維持外觀比例。 當 SetDisplayConfig 套用外觀比例保留延展式縮放時,黑色帶可能會顯示在桌面的上方和下方或左或右方。 不過,桌面上方和下方和右方都看不到黑色帶。 因為用戶預期偏好這種類型的調整, 所以 SetDisplayConfig 會將這種類型的調整套用為預設值。 下圖顯示外觀比例保留延展式縮放比例。
縮放取決於路徑所使用的來源和目標模式。 此外,呼叫端可以呼叫 SetDisplayConfig 而不指定目標模式資訊 (,也就是設定 modeInfoArray 參數是選擇性的,而且可以設定為 NULL) 。 這表示呼叫端通常無法預測 SetDisplayConfig 是否必須執行任何調整。 此外,沒有 API 可取得圖形配接器所支援之縮放類型的完整清單。 EnumDisplaySettings Win32 函式會在 DEVMODE 結構的 dmDisplayFixedOutput 成員中傳回DMDFO_DEFAULT,當呼叫端要求 Windows 7 縮放類型時,lpDevMode 參數會指向該成員。
呼叫端傳遞至 SetDisplayConfig 的調整是調整意圖,而不是執行調整作業的明確要求。 例如,如果需要調整 (,來源和目標解析度會) 不同, 則 SetDisplayConfig 會使用呼叫端所提供的縮放比例。 如果不支援提供的縮放比例, SetDisplayConfig 會使用圖形配接器的默認縮放比例。 當呼叫端傳遞至 SetDisplayConfig 的來源和目標解析相同時, SetDisplayConfig 一律會設定身分識別調整。
調整要求
下表顯示不同的 SetDisplayConfig 調整要求,並識別下列子區段中數據表中使用的縮寫名詞。 如需DISPLAYCONFIG_SCALING_XXX值的定義,請參閱DISPLAYCONFIG_SCALING。
調整要求 | 下表中使用的縮寫名詞 |
---|---|
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 |
配接器預設縮放值。 目前,在平板電腦上,預設值會延展。 在支援 Windows 顯示器驅動程式模型 (WDDM) 之圖形適配卡的非平板電腦上,驅動程式會定義預設值。 在支援 WDDM 且具有 Windows 7 新功能之圖形適配卡的非平板電腦上,預設值為 DC_ASPECTRATIOCENTEREDMAX。 | AdapterDefault |
目前線上監視器之資料庫的縮放值 | DatabaseValue |
SetDisplayConfig 調整要求
下表顯示儲存在資料庫中的值,以及實際設定的值,其中:
- 當結果來源模式和目標模式具有相同解析度時,「設定 (相同) 」和「儲存 (相同) 」是設定和儲存值
- 當結果來源模式和目標模式有不同的解析度時,「設定 (不同的) 」和「儲存 (不同的) 」是設定和儲存值
傳遞至 SetDisplayConfig 的縮放旗標 | 設定相同的 () | 儲存 (相同的) | 設定不同的 () | 設定不同的 () |
---|---|---|---|---|
DC_IDENTITY目前未在 Db 中設定 | DC_IDENTITY | AdapterDefault | AdapterDefault | AdapterDefault |
在 Db 中DC_IDENTITY目前的設定 | 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 |
使用 Windows 7 功能驅動程式在 WDDM 上DC_ASPECTRATIOCENTEREDMAX | DC_IDENTITY | DC_ASPRATIOMAX | DC_ASPRATIOMAX | DC_ASPRATIOMAX |
WDDM 驅動程式上的DC_ASPECTRATIOCENTEREDMAX | DC_IDENTITY | AdapterDefault | AdapterDefault | AdapterDefault |
在 WDDM 上使用 Windows 7 功能驅動程式DC_CUSTOM,其支持路徑上的自定義調整 | DC_CUSTOM | DC_CUSTOM | DC_CUSTOM | DC_CUSTOM |
DC_CUSTOM WDDM 上的 Windows 7 功能驅動程式不支援路徑上的自定義調整 | DC_IDENTITY | AdapterDefault | AdapterDefault | AdapterDefault |
WDDM 驅動程式上的DC_CUSTOM | DC_IDENTITY | AdapterDefault | AdapterDefault | AdapterDefault |
DC_PREFERRED目前設定不在 Db 中 | DC_IDENTITY | AdapterDefault | AdapterDefault | AdapterDefault |
在 Db 中DC_PREFERRED目前的設定 | DC_IDENTITY | DatabaseValue | DatabaseValue | DatabaseValue |
舊版 ChangeDisplaySettingsEx 調整要求
下表顯示呼叫端如何傳遞至舊版 ChangeDisplaySettingsEx API 的縮放比例對應至縮放集,其中:
- 當結果來源模式和目標模式具有相同解析度時,「設定 (相同的) 」和「儲存 (相同) 」是設定和儲存值
- 當產生的來源模式和目標模式有不同的解析度時,「設定 (不同的) 」和「存放區 (不同的) 」是設定和儲存值
傳遞至 ChangeDisplaySettingsEx 的縮放旗標 | 設定相同的 () | 儲存 (相同的) | 設定不同的 () | 設定不同的 () |
---|---|---|---|---|
DMDFO_DEFAULT目前設定不在CCD資料庫中 | DC_IDENTITY | AdapterDefault | AdapterDefault | AdapterDefault |
在 CCD 資料庫中具有目前設定的DMDFO_DEFAULT | 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未設定,目前設定不在 CCD 資料庫中 | DC_IDENTITY | AdapterDefault | AdapterDefault | AdapterDefault |
DM_DISPLAYFIXEDOUTPUT未設定,CCD 資料庫中目前的設定 | DC_IDENTITY | DatabaseValue | DatabaseValue | DatabaseValue |
舊版 EnumDisplaySettings 調整翻譯
下表顯示如何轉譯和傳回 EnumDisplaySettings 的顯示組態調整。
目前作用中的縮放比例 | 從舊版 EnumDisplaySettings 傳回的 GDI 縮放值 (ENUM_CURRENT_SETTINGS) |
---|---|
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 遊戲和調整
Microsoft DirectX 9L 和舊版運行時間要求應用程式一律呼叫 ChangeDisplaySettingsEx 函式,而不需在 lpDevMode 參數指向之 DEVMODE 結構的 dmFields 成員中設定DM_DISPLAYFIXEDOUTPUT。 DirectX 10 和更新版本的運行時間可讓應用程式選擇這些應用程式傳遞給 ChangeDisplaySettingsEx 的調整。 下表顯示縮放值與傳遞至 ChangeDisplaySettingsEx 之縮放旗標的對應。
DXGI 翻轉鏈結縮放值 | 傳遞至 ChangeDisplaySettingsEx 的縮放旗標 |
---|---|
DXGI_MODE_SCALING_UNSPECIFIED | DMDFO_DEFAULT、DMDFO_CENTER或DMDFO_STRETCH。 應用程式所使用的縮放比例取決於數個因素,其中包括目前的桌面調整和驅動程序公開的模式清單。 |
DXGI_MODE_SCALING_CENTERED | DMDFO_CENTER |
DXGI_MODE_SCALING_STRETCHED | DMDFO_STRETCH |
藉由搭配上述調整數據表使用這項資訊,您可以從 DirectX 應用程式判斷預期的調整。