WPF程序中的單位是與設備無關的單位,每個單位是1/96英寸,如果電腦的DPI設置為96(每個英寸96個像素),那么此時每個WPF單位對應一個像素,不過如果電腦的DPI設備為120(每個英寸120個像素),那此時每個WPF單位對應應該是120/96=1.25個像素
一般在程序中我們常常需要得到當前屏幕的寬和高,常見做法有:
1.這兩個方法可以返回當前屏幕選擇的分辨率,該分辨率是以像素為單位,在DPI為96的情況下我們可以利用它們來做一些控件的定位,因為此時WPF單位對應一個像素,而當DPI非96的情況下,用該分辨率來做定位就會發現誤差了,因此此時每個WPF單位並不是對應於一個像素
System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width
System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height
2.這兩個方法可以返回當前屏幕的寬和高,它是與設備無關的單位(1/96英寸),因此用它來做控件的定位,在DPI改變的情況下,也不會發生定位上的誤差
SystemParameters.PrimaryScreenWidth
SystemParameters.PrimaryScreenHeight
3.這兩個方法可以返回當前屏幕工作區的寬和高(除去任務欄),它也是與設備無關的單位,通常我們可以結合2和3來得到任務欄的高度
SystemParameters.WorkArea.Size.Width
SystemParameters.WorkArea.Size.Height
