共用方式為


DPI 相關 API 和登錄設定

如果您需要執行部署自訂,下列各節將說明安裝後腳本可能需要存取的登錄機碼和系統參數。

本文內容:

主要顯示器原生解析度

表 1 Windows 8.1縮放層級,雖然完全不詳盡,但會提供一些常見顯示器Windows 8.1縮放層級的相關資訊。 面板 DPI 表示面板的實體圖元密度, 縮放層級 表示將用於此顯示器的縮放比例。

表 1 Windows 8.1調整層級

顯示大小 顯示器解析度 水準 (圖元) 垂直 (圖元) 面板 DPI 調整層級
10.6" FHD 1920 1080 208 150%
10.6" HD 1366 768 148 100%
11.6" WUXGA 1920 1200 195 150%
11.6" HD 1366 768 135 100%
13.3" WUXGA 1920 1200 170 150%
13.3" 秦皇島 2560 1440 221 200%
13.3" HD 1366 768 118 100%
15.4" FHD 1920 1080 143 125%
15.6" QHD+ 3200 1800 235 200%
17" FHD 1920 1080 130 125%
23" (4K) 3840 2160 192 200%
24" 秦皇島 2560 1440 122 125%

若要以程式設計方式尋找任何裝置的這項資訊,您可以撰寫可回報資料的公用程式程式。 原生主要解析是藉由呼叫 API GetDeviceCaps () 函式來擷取,使用桌面的 hdc 和 HORZRES 和 VERTRES 索引:

// Get desktop dc
desktopDc = GetDC(NULL);
// Get native resolution
horizontalResolution = GetDeviceCaps(desktopDc,HORZRES);
verticalResolution = GetDeviceCaps(desktopDc,VERTRES);

如需 GetDC 的詳細資訊,請參閱 GetDC () 函式

主要顯示器 DPI 縮放比例

同樣地,您可以使用 LOGPIXELSX 和 LOGPIXELSY 索引來取得圖元密度:

// Get desktop dc
desktopDc = GetDC(NULL);
// Get native resolution
horizontalDPI = GetDeviceCaps(desktopDc,LOGPIXELSX);
verticalDPI = GetDeviceCaps(desktopDc,LOGPIXELSY);

這些結果會在座標系統中傳回,其中 96 對應至 100%,如 表 2 DPI 縮放比例所示。

表 2 DPI 縮放比例

DPI 比例因素
96 100
120 125
144 150
192 200

注意

此 API 會根據應用程式的 DPI 感知模式傳回不同的結果。 設定感知模式需要將 XML 新增至應用程式資訊清單,如下所示:

DPI 感知模式 資訊清單設定 傳回值
 所有顯示器 96,不論縮放比例為何
系統 DPI 感知 <DPIAware > True < /DPIAware> 使用者第一次登入 Windows) 時,啟動 Windows 會話時的主要顯示器 DPI (
Per-Monitor DPI 感知 <DPIAware > True/PM < /DPIAware> 使用者第一次登入 Windows) 時,啟動 Windows 會話時的主要顯示器 DPI (。 若要取得應用程式所在顯示器的 DPI,請使用 GetWindowDpi () GetDpiForMonitor ()

如需此資訊清單設定的詳細資訊,請參閱 SetProcessDPIAware 函式

縮放模式

主控台\ 外觀和個人化\顯示使用者介面 (UI) 包含核取方塊:讓我為所有顯示器選擇一個縮放層級,控制系統是否將單一縮放比例套用至所有顯示 (,如同Windows 8和舊版 Windows) ,或將每個顯示器圖元密度納入考慮的不同縮放比例 (Windows 8.1預設) 。 此核取方塊會在 Windows 8.1 中設定HKCU\主控台\Desktop\Win8DpiScaling登錄機碼。

表 3 HKCU\主控台\Desktop\Win8DpiScaling 值

金鑰值 意義
0 每個顯示器的不同縮放比例:Windows 8.1預設值。從一個顯示器移至另一個顯示器的內容會是正確的大小,但可以點陣圖縮放。
1 相同的縮放比例會套用至所有顯示器:Windows 8和舊版 Windows 的行為。 從一個顯示器移到另一個顯示器的內容可能是錯誤的大小。

Windows 8.1縮放模式中的調整覆寫

當 [讓我選擇所有顯示器的縮放比例]核取方塊已清除,且系統以Windows 8.1縮放模式執行時,系統會提供滑杆,讓使用者覆寫目前的縮放比例,從 [較小] 到 [中] 到 [較大]。 此設定是在HKCU\主控台\Desktop\DesktopDPIOverride登錄機碼中設定。

表 4 HKCU\主控台\Desktop\DesktopDPIOverride 值

金鑰值 意義
<0 例如,如果預設值為 150% 縮放比例,則 -1 對應至 125%、-2 到 100%) ,則從 (預設值減少每個顯示縮放比例。
0 針對每個顯示使用預設值。
0> 使用上一個範例將每個顯示因數增加 (,+1 對應至 200% 縮放比例) 。

此模式中的所有顯示縮放比例都會限制為下列四個值之一:100%、125%、150%、200%。 此外,套用縮放之後,應用程式預期至少有 720 條有效的解析度線 (,也就是顯示器的實體垂直解析度除以縮放比例) ;這可能會進一步限制允許的顯示縮放比例範圍。 表 5 顯示值 會顯示允許用於不同大小顯示的值:

表 5 顯示值

垂直線 支援的縮放比例
<900 100%
>= 900 和 < 1080 100%, 125%
>=1080 和 < 1440 100%, 125%, 150%
>=1440 100%, 125%, 150%, 200%

Windows 8縮放模式中的全系統縮放比例

核取 [ 讓我選擇所有顯示器的縮放比例 ] 核取方塊時,使用者可以指定適用于所有顯示器的縮放比例,而不論每個顯示器的圖元密度為何。 藉由使用自訂設定,使用者可以選取 100%、125%、150%、200% 以外的值,但僅限於範圍 (100%-500%) 。 此設定是在HKCU\主控台\Desktop\LogPixels登錄機碼中設定。

表 6 HKCU\主控台\Desktop\LogPixels 值

金鑰值 意義
96 每個顯示器上 100% 的縮放比例
120 每個顯示器上 125% 的縮放比例
144 每個顯示器上 150% 的縮放比例
192 每個顯示器 200% 的縮放比例
<other> <每個顯示器上的其他 > 96/100 縮放比例

開發高 DPI 應用程式的檔

適用於 IT 專業人員的高 DPI 支援