WPF 不使用像素作為佈局單位,改用 裝置獨立單位 (Device Independent Unit, DIU)。
1 DIU = 1/96 英吋,固定不變。
實際像素 = DIU 數值 × 系統 DPI ÷ 96
已知螢幕解析度與尺寸可算出實際 DPI:
螢幕 DPI = √(水平像素² + 垂直像素²) / 螢幕對角吋數
| 裝置 | 尺寸 | 解析度 | 約略 DPI | 96 DIU 物理長度 |
|---|---|---|---|---|
| 筆電 | 12.5 吋 | 1366×768 | ~125 DPI | < 1 吋 |
| 桌機螢幕 | 18.5 吋 | 1366×768 | ~85 DPI | > 1 吋 |
結論:相同 96 DIU 的按鈕,在高 DPI 筆電上物理尺寸較小,在低 DPI 桌機螢幕上較大。WPF 自動縮放確保 UI 在不同裝置上物理大小大致一致。
pixels = diu * (dpi / 96.0),可用 VisualTreeHelper.GetDpi(visual) 取得當前 DPI(.NET 4.6.2+)。