获取屏幕分辨率时遇到的奇怪问题,该如何准确获取,获取屏幕分辨率
System.Windows.Forms.Screen.PrimaryScreen.Bounds.WidthSystem.Windows.Forms.Screen.PrimaryScreen.Bounds.Height
以前都是使用这两个属性去获取屏幕的分辨率。但是最近发现一个比较奇怪的问题,当我调整系统DPI之后,在WINFORM程序中通过这两个属性获取到的分辨率并非在“显示设置”窗口里显示的分辨率大小,而是屏幕被截取后屏幕实际显示的宽和高。(系统标准DPI为96,假设在1280*800分辨率下我将DPI调整为200%,即192之后,通过这两个属性获取到的宽和高就是640*400.而在系统“显示设置”窗口中分辨率仍显示为1280*800);然而非常奇怪的是,在WPF程序中使用这两个属性,却可以准确获取到屏幕分辨率,即系统“显示设置”窗口中显示的分辨率。请问这是怎么一回事?在WINFORM程序中又该如何准确获取分辨率?
解决方案
private void Form1_Load(object sender, EventArgs e)
{
using (Graphics myGraphics = this.CreateGraphics())
{
MessageBox.Show(String.Format("Resolution X: {0} dpi, Resolution Y: {1} dpi", myGraphics.DpiX, myGraphics.DpiY),
"Windows Resolution");
}
}
用户评论