首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

Windows 7 高 DPI 應用程式開發白皮書

     編輯:關於.NET

使用者調查驚人發現

最終使用者研究顯示:僅約 55% 使用者將顯示器設定為最高解析度。近半數使用者因高解析度字體過小而降低解析度,但這會帶來負面影響:

  • ClearType 在非原生解析度下渲染錯誤
  • 無法精確呈現高保真內容
  • 高解析度照片無法以最高保真度顯示

解決之道:提高 DPI 而非降低解析度

鼓勵使用者調高 DPI 設定 (如 120 DPI / 125%、144 DPI / 150%),同時保持面板原生解析度,即可獲得:

  • 清晰可讀的文字
  • 高保真圖形/照片呈現
  • 正確的 ClearType 渲染

但應用程式若無 DPI 感知,在高 DPI 下會出現:文字截斷、WinForms 版面錯位、像素位圖模糊、配置/圖片大小問題、介面模糊、字體大小不匹配等嚴重問題。

Windows 7 推高 DPI 普及的三大因素

  1. 更多 OEM 廠商預裝高 DPI 設定的筆記型電腦
  2. Windows 7 乾淨安裝預設即為高 DPI
  3. 控制台「顯示」設定更容易被使用者發現與調整

常見螢幕規格與建議 DPI 設定對照表

描述水平垂直寬度面板 DPIOS DPI縮放比例
17" WXGA+144090017.010096100%
15.4" WXGA+144090015.411096100%
15.4" WXGA128076815.49796100%
14.1" WXGA128076814.110696100%
13.3" WXGA128076813.311296100%
17" WUXGA1920120017.0133120125%
17" WSXGA+1680105017.0117120125%
15.4" WSXGA+1680105015.4129120125%
14.1" WXGA+144090014.112096*125%
13.3" WXGA+144090013.312796*125%
12.1" WXGA128076812.112396*125%
15.4" WUXGA1920120015.4147144150%

註:產生有效解析度 1024×768 時,不配置 DPI 縮放。

解決方案總綱

1. 確保開發/測試環境為高 DPI

控制台 > 顯示 > 選擇適當縮放比例 (125% / 150%)。

2. WinForms 應用程式

  • 結構通常良好,僅需少量 UI 控制項微調。
  • 關鍵:根據表單內容,將 AutoScaleMode 從 Font 改為 Dpi (或視情況保留 Font)。

3. 原生 (Native) 應用程式

  1. 加入資訊清單宣告 DPI Aware:
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"
         xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
  <asmv3:application>
    <asmv3:windowsSettings xmlns="https://schemas.microsoft.com/SMI/2005/WindowsSettings">
      <dpiAware>true</dpiAware>
    </asmv3:windowsSettings>
  </asmv3:application>
</assembly>
  1. 宣告後重新執行觀察問題,逐一修正。
  2. 使用 CDPI 輔助類 依序解決:按鈕大小、版面配置、視窗大小、文字繪製 (改用 DrawThemeText) 等,直到完全相容高 DPI。

總結

  • 高 DPI 顯示器與預設高 DPI 設定日益普及。
  • 缺乏 DPI 感知會導致嚴重 UI 問題,甚至影響功能正確性。
  • 應用程式必須具備 DPI 感知,並在 DPI 感知環境下完整測試。
  • 原生應用程式:所有 UI 元素必須依 DPI 設定縮放 (使用 CDPI 或同等機制)。
  • WinForms 應用程式:留意表單 AutoScaleMode 屬性,依內容選擇 Font 或 Dpi。
  • 終極高保真:提供多解析度位圖/圖示/工具列圖片,執行時動態選擇最佳素材。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved