WPF關于設備無關性的理解
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
wpf的像素單位是1/96*系統dpi。當前系統dpi是96,那么wpf的一個單位長就是1px像素。這個系統dpi的意思就是物理單位一英寸里有多少個像素點,比如windows標準的96dpi,意味著一英寸有96個像素。則每個像素大小是1/96(英寸)。計算dpi的方法是(根號下(分辨率橫向平方+分辨率縱向平方))/顯示屏對角線尺寸(英寸位單位),比如27寸的2k顯示器,dpi的計算就等于(根號下(2560*2560)+(1440*1440))/27。這個分辨率就是顯示器橫向2560個像素,縱向1440個像素。 接下來,我們可以計算一個With=96的按鈕在dpi等于96的系統上的按鈕的物理英寸大小為96*(1/96*96)/96=1(英寸)。解釋一下96*(1/96*96)表示這個按鈕的長是多少像素,最后除以96表示除以的是dpi,得到的結果就是1英寸。比如一個dpi為192的系統,一個按鈕長為96的按鈕的像素值96*(1/96*192)=192px,192(px)/dpi192=1(英寸),雖然dpi增大了,一個長96的按鈕的像素值是192px,但是它再除以192dpi,最終得到的結果還是物理尺寸1英寸。 總的來講,wpf的設備無關性,我的理解就是,無論系統的分辨率是多少,寫按鈕的Width=96,在這些不同的dpi的顯示器上,這個按鈕的物理尺寸長度的依然是1英寸。但是如果調整了dpi的倍數,比如120%dpi,那么按鈕的物理尺寸就會相應的變長。 在winform中,就會有這樣的現象,應用在dpi為96的系統開發,然后放在dpi為85的系統C上,就會發現應用的系統的字體,控件長寬變寬了。這是因為本來a控件寫Width=96,但是在C系統上,一英寸只需要85個像素,那么96/85>1英寸了,所以它看起來就變長了。同理,如果是放在dpi為192的系統M上,就會發現控件的長寬字體大小都縮小了一倍,就是因為96/192=0.5(英寸),它只有0.5英寸長了,縮小了一半。 ?這也是為什么windows會有放大dpi的功能,在120%放大,這個放大不是說dpi*1.2這樣放大,而是放大的像素點的大小。那么放大后,相當與表示1英寸所需的像素點將會減少,因為像素點放大了,那么96標準dpi下的軟件,在高dpi系統的120%倍放大效果下,它的物理尺寸就會被拉長,因為像素點的邊大了,這樣字體和控件大小更接近96dpi系統下的大小了。 轉自https://www.cnblogs.com/HelloQLQ/p/18803102 該文章在 2025/4/3 15:20:39 編輯過 |
關鍵字查詢
相關文章
正在查詢... |