wpf在計算視窗尺寸大小時使用的是系統的dpi設定。wpf視窗以及視窗中所有的元素都是使用裝置無關單位度量。乙個裝置無關單位被定義為1/96英吋。
[物理單位尺寸]=[裝置無關單位尺寸]*[系統dpi]=1/96英吋*96dpi=1畫素。
當系統預設dpi設定為96dpi時,也就是需要96個畫素填充1英吋的空間,如果系統dpi設定為120dpi(對於高分解析度顯示器),這時的物理單位尺寸為:
[物理單位尺寸]=[裝置無關單位尺寸]*[系統dpi]=1/96英吋*120dpi=1.25畫素。
也就是說當把系統dpi設定為120dpi時,wpf渲染引擎假定了乙個裝置無關單位等於1.25個畫素,如果顯示了乙個96*96大小的按鈕,物理尺寸實際為120*120(96*1.25=120)。也就是說在乙個標準顯示器上(96dpi)大小為1英吋的按鈕,在畫素高的顯示器上仍然為1英吋大小。
win7上更改系統dpi如下圖:
總結就是:隨著設定的解析度越高,顯示1英吋所需的dpi就越多。
WPF單位真的與解析度無關嗎?
wpf從發布之日起,一直將 解析度無關 resolution independence 作為其亮點,聲稱使用wpf製作的使用者介面在輕巧的ultra mobile pc的螢幕上和在50英吋的電視機上都能很好地顯示。微軟之所以稱wpf具備 解析度無關 這一特性,主要是因為wpf的座標單位設計成為以1 ...
wpf 獲取螢幕解析度
1 引入命名空間 using system.windows 2 沒有工作列的工作區域 width systemparameters.workarea.width height systemparameters.workarea.height 3 主顯示器全屏視窗工作區域,在螢幕縮放比不等於100 的...
WPF窗體自適應解析度
使用wpf建立乙個窗體 window 時,如果設定了固定的高度 height 和寬度 width 一旦使用者的電腦解析度過低,就會使得窗體及其中的內容無法完整地顯示出來。要解決這個這個問題,有以下幾個方法可供參考 viewbox如下 window x class xmlns xmlns x titl...