(原創)高DPI適配經驗系列:(一)縮放比例與DPI對應關係

文章推薦指數: 80 %
投票人數:10人

在螢幕尺寸不變的情況下,高解析度也就意味著高DPI,對於桌面程式而言 ... 到了Win10,使用者可以自己設定的縮放百分比是100%~500%之間的任意比例。

Togglenavigation IT人 IT人 (原創)高DPI適配經驗系列:(一)縮放比例與DPI對應關係 leslie_xin發表於 2021-04-06 一、前言 當下,2K解析度已成為主流標配,3K、4K也已經廣泛應用。

在螢幕尺寸不變的情況下,高解析度也就意味著高DPI,對於桌面程式而言,除了先天就支援高DPI的框架外(如UWP、Electron等),大部分桌面程式如果不進行高DPI的適配,往往會出現介面模糊、控制元件錯位、文字顯示不全等問題。

目前網上關於高DPI適配的文章很少,大多隻是某個問題點的解決、某個DPI相關概念的講解,繁繁雜雜不成系統,也無跡可循。

本人曾對自己的軟體進行過高DPI的適配,在適配的過程中,遇到了很多問題,這些問題中有很多都沒有現成的答案,都是靠自己摸索和嘗試去解決的。

本著分享的精神,便有了本系列文章,著重分享一下自己在高DPI適配中的一些知識與經驗,同時也分享下自己是如何一步步發現、推理、歸納、總結出這些經驗的,希望這種一步步的過程,會對你有一些啟發。

當然,既然是“經驗”,肯定不會百分百的正確,也不會百分百的通用,但“經驗”的目的,就是讓人有跡可循,作為後來者的肩膀,使之可以前進得更遠。

相信看完的你,一定會有所收貨! 本文地址:https://www.cnblogs.com/lesliexin/p/14620222.html 二、縮放百分比與DPI之前的對應關係 (一),資訊的蒐集 1,縮放比例 在Win7中,使用者可自行設定的縮放百分比是:100%、125%、150%。

縮放比例的設定方法: 到了Win10,使用者可以自己設定的縮放百分比是100%~500%之間的任意比例。

縮放比例的設定方法: 2,DPI 在不進行縮放時,即縮放比例為100%時,系統的DPI是96。

在縮放比例為125%時,DPI為120。

在縮放比例為150%時,DPI為144。

3,初步分析及問題發現 通過縮放比例與DPI的關係,我們可以發現,兩者的增加並不是1比1的關係,即:當縮放比例增加1時,DPI也增加1。

如果為1比1關係,那縮放比例為125%時,DPI應該是(125-100)+96=121;而現實DPI卻是120。

同理,縮放比例為150%時,現實DPI是144,而不是(150-100)+96=146; 4,擴大樣本量 因為Win7中只能設定3種比例,因為樣本量太少,而無法正確歸納總結出規律。

但Win10足足可以設定100~500共401個縮放比例,樣本量足夠多,足以歸納總結出對應規律。

通過在Win10中進行大量的設定,發現了以下現象。

4.1,特殊的縮放比例 縮放比例每一個100間隔之間,就有8個特殊的縮放比例,這8個比例2個一組,對應同一個DPI的值。

如下圖所示。

100%~200% 200%~300% 300%~400% 400%~500% 4.2,特殊縮放比例自動變化 這些特殊的縮放比例中,只能輸入圖中加粗的縮放比例,即使輸入前面的值,當你點選應用時,也會自動變成後面的值。

以特殊縮放比例是212為例,輸入212,點選“應用”按鈕,會自動變成213,也就是上圖中加粗的字型。

4.3,除特殊縮放比例外的與DPI的對應關係。

通過樣本發現,在這些特殊縮殊縮放比例之間,縮放比例與DPI的增加關係是1比1的。

如:縮放比例為225時,DPI為226,其縮放比例與上一個特殊縮放比例213的差值是12,其DPI的與上一個特殊縮放比例213對應的DPI值204之前的差值也是12。

同理,與下一個特殊縮放比例237(DPI:228)之間的差值也都是12。

在計算時通過引入對這些特殊縮放比例的處理,我們就可以正確計算出縮放比例所對應的DPI值。

5,歸納 雖然已經可以通過引入特殊縮放比例來計算出正確的DPI值,但這並不是終點,還需要歸納出縮放比例與DPI之間的數學關係。

只有通過數學關係,才能不僅僅可以通過縮放比例來計算DPI,也可以通過DPI來計算出縮放比例。

通過簡單的歸納,我歸納出了兩者之間的數學關係。

如下: 5.1,縮放比例->DPI 5.2,DPI->縮放比例 三,總結 通過上面一步步發現縮放比例與DPI關係的流程,發現並沒有多少技術含量,更多的是耐心,也就是一些笨功夫。

在統計出那些特殊的縮放比例時,我並沒有將100~500之間共401個縮放比例一個個都進行設定,而是通過7、8個樣本推理出了一個結論,然後根據這個結論反推出幾組值,最後再通過手動設定來驗證這幾組值,最終得到了正確的結論。

通過上面總結出來的縮放比例與DPI的關係,我寫了個小工具,可以方便的在縮放比例與DPI之間換算。

縮放比例與DPI轉換工具下載:https://files.cnblogs.com/files/lesliexin/ScaleFactor2Dpi.zip -【END】- 相關文章 [C#](原創)一步一步教你自定義控制元件——06,MaskLayer(遮罩層) 2021-02-24 C# 【原創】Linux虛擬化KVM-Qemu分析(十)之virtio驅動 2021-02-24 Linux 面試官:三年工作經驗,你連序列化都說不明白? 2021-03-02 面試 Unity學員原創滾球聯機遊戲,眾多道具特效大樂鬥如何實現? 2021-03-02 Unity 單作品下載破千萬,小遊戲團隊轉戰沙盒經驗覆盤 2021-03-05 推薦3個快速開發平臺,前後端都有,專案經驗又有著落了 2021-03-05 商務部研究院:中國經驗貢獻全球農業發展和農村減貧研究工作報告(附下載) 2021-03-07 GooglePlay將降低抽成比例,部分情況低至15% 2021-03-17 {i}三期必出單雙資料(本站原創) 2021-03-26 (極致經驗指導)彩票如何看大小雙單走勢圖χ 2021-03-26 ADL:2020年針對亞裔美國人網路暴力比例增幅最大 2021-03-26 【原創】Linux虛擬化KVM-Qemu分析(十一)之virtqueue 2021-03-28 Linux (原創)在Linux上安裝執行Python3(CentOS7為例) 2021-03-29 PythonLinuxCentOS 經驗分享:談談如何多快好省地開發獨立遊戲 2021-03-31 一次outline去除經驗(非繼承屬性,看著像繼承) 2021-03-31 分享一次排查CLOSE_WAIT過多的經驗 2021-04-05 人工智慧 【Django】有關多使用者管理的一點小經驗分享 2021-04-05 Django 最新文章 Java專案中使用Resilience4j框架實現故障隔離 架構團隊如何重構內部系統 MongoDB學習之聚合操作 MySQL全面瓦解28:分庫分表 新買的電腦是win11系統,找不到DirectX工具?教你如何操作開啟 升級Win11系統會比Win10好多了嗎,看看win11系統有哪些好與不好 飛項:如何做團隊協同辦公?請看看這兩個方法 一款極簡的日程管理工具——飛項 要避免的5個雲網路部署錯誤 進擊的Ansible(二):如何快速搞定生產環境Ansible專案佈局? 【等保】等保工作中常見導致等保測評結論為差的高風險項彙總 25、【創業必備企業架構】SpringCloud分散式微服務雲架構原始碼之MySQL匯出資料



請為這篇文章評分?