WPF的单位 屏幕 分辨率

Posted lonelyxmas

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF的单位 屏幕 分辨率相关的知识,希望对你有一定的参考价值。

原文:WPF的单位 屏幕 分辨率

WPF程序中的单位是与设备无关的单位,每个单位是1/96英寸,如果电脑的DPI设置为96(每个英寸96个像素),那么此时每个WPF单位对应一个像素,不过如果电脑的DPI设备为120(每个英寸120个像素),那此时每个WPF单位对应应该是120/96=1.25个像素

  一般在程序中我们常常需要得到当前屏幕的宽和高,常见做法有:

  1.System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width

  System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height

  这两个方法可以返回当前屏幕选择的分辨率,该分辨率是以像素为单位,在DPI为96的情况下我们可以利用它们来做一些控件的定位,因为此时WPF单位对应一个像素,而当DPI非96的情况下,用该分辨率来做定位就会发现误差了,因此此时每个WPF单位并不是对应于一个像素

  2.SystemParameters.PrimaryScreenWidth

  SystemParameters.PrimaryScreenHeight

  这两个方法可以返回当前屏幕的宽和高,它是与设备无关的单位(1/96英寸),因此用它来做控件的定位,在DPI改变的情况下,也不会发生定位上的误差

  3.SystemParameters.WorkArea.Size.Width

  SystemParameters.WorkArea.Size.Height

  这两个方法可以返回当前屏幕工作区的宽和高(除去任务栏),它也是与设备无关的单位,通常我们可以结合2和3来得到任务栏的高度

以上是关于WPF的单位 屏幕 分辨率的主要内容,如果未能解决你的问题,请参考以下文章

WPF 获取屏幕分辨率(获取最大宽高)等

WPFの获取屏幕分辨率并自适应

Android开发系列之屏幕密度和单位转换

Unity 3D 屏幕适配全方面解析!

Unity高级开发-项目与屏幕适配

Unity3D-关于项目的屏幕适配(看我就够了)