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 縮放比例 |