qt 5.5文檔翻譯系列-High DPI Displays

高DPI顯示

    高DPI的顯示器用來顯示高質量的圖像和清晰的字體越來受歡迎。例如,4K顯示器包含3840x2160像素,邏輯分辨率爲192DPI,然而比較老的顯示器中大約有1920x1080像素達到96DPI。

  1. 高DPI帶來的問題

高DPI顯示會引起現有的應用程序許多問題:

  • 應用程序使用UI設計和固定座標會看起來比較小。用點和用像素表示的尺寸去指定字體大小是不確定的因爲點是和顯示器分辨率無關的。例如,一個40x20像素的fram,使用12pt的文本“hello”在低分辨率的顯示器下可以正確的顯示,但是在高分辨率的顯示器上這個frame就太小了,導致這個文本都看不清了。

  • 應用程序必須適應用戶在多個不同分辨率下顯示。例如,用戶可能使用4K顯示器顯示一個圖像編輯器的文檔窗口,用低分辨率的顯示器去顯示工具箱。

  • 輔助存儲和pixmap緩存將變得非常大,導致渲染速度可能會變慢。

  1. 操作系統支持

    對於高分辨率的顯示操作系統支持qt提供的下列支持:

    OS X

    在OS X上,這些都是單獨的,基於float的用戶座標系統(不是設備像素)。對於高DPI的顯示器,操作系統將使用高效的縮放算法縮放內容使其看起來非常清晰(視網膜顯示屏)。

    注意:縮放不應用於OpenGL窗口。

    Microsoft Windows

    縮放

    用戶能從控制面板或上下文菜單選擇縮放因子。這是通過查詢系統度量單位的功能爲標準字體尺寸,窗口邊界的尺寸,等等返回不同的值。操作系統不執行任何實際的縮放。

    DPI感知(DPI Awareness)

    在Windows中一個應用程序能聲明以下DPI感知級別:

DPI Awareness 級別含義
DPI Unaware這個級別在Windows-Vista中加入。Windows將模擬應用程序運行在1920x1080 96DPI的標準顯示中並且縮放應用程序。目的是適應爲低DPI顯示設計的較老的應用程序。一些工件可能來源於這種類型縮放。
System-DPI
Aware
這個級別在Windows-Vista中加入。當有多個顯示器連接它不同於Per-Monitor DPI Aware。Windows將爲所有連接的顯示器估算一個合適的縮放值。
Per-Monitor
DPI
Aware
這個級別已經在Windows 8.1中加入。Windows不執行任何縮放。

在Windows 8.1活Qt應用程序默認是Per-Monitor DPI Aware,在老版本的Windows是System-DPI Aware。自Qt5.4,能通過一個參數去指定平臺插件(具體請看官方文檔Using qt.conf):

<application> -platform windows:dpiawareness=0,1,2

Qt支持

  • 能夠提供pixmaps或者高像素的原圖:請看官方文檔Drawing High Resolution Versions of Pixmaps and Images.

  • Qt5.4加入了對縮放實驗性的支持通過設備像素比對Windows和Unix(XCB)去模擬OS X平臺插件。由環境變量QT_DEVICE_PIXEL_RATIO控制。可以設置一個數值被用作縮放因子或者“auto”通過檢查這個顯示器尺寸去決定縮放因子。

    推薦使用Fusion風格。

    移植存在的應用程序

    爲了很快讓一個爲低DPI值設計的應用程序運行在一個高分辨率顯示器,考慮縮放選項(讓應用程序在Windows上用DPI Unawware運行或者設置環境變量QT_DEVICE_PIXEL_RATIO的值爲“auto”。儘管這個選項可能會導致縮放或者繪製控件)

    從長遠來看,應用程序應該被適應運行未修改:

    • 總是使用QPainter的qreal版本的繪製API。

    • 窗口和對話框大小和屏幕大小的關係。

    • 取代在佈局中硬編碼尺寸並且繪製代碼通過從字體度量值或者屏幕尺寸計算值。

高DPI專業術語表

術語定義
設備獨立像素用在應用程序的像素(用戶空間),由操作系統或者Qt進行縮放。
設備像素顯示設備的像素。
設備像素比由操作系統或者Qt應用的縮放因子。
邏輯DPI像素被用來定義以點爲單位的字體尺寸到以像素爲單位的字體尺寸轉換。典型的標準值有96,128...192。
物理DPI物理分辨率可以通過顯示器尺寸除以像素的數量求出。
視網膜顯示屏請看Wikipedia on Retina Displays
用戶空間應用程序使用的座標空間(設備獨立像素)。

這篇文檔就翻譯完啦!英語太差翻譯這個翻譯了好幾個小時,還有很多詞句叫不準,翻譯的不好,希望大家批評指正!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章