获取并设置屏幕分辨率

问题描述:

如何使用Visual C#收集和更改屏幕分辨率?获取并设置屏幕分辨率

+5

你见过[这个codeproject文章](http://www.codeproject.com/KB/cs/csdynamicscrres.aspx)吗? – Justin 2011-02-22 19:07:14

+0

@Justin:将SystemInformation.PrimaryMonitorSize添加到组合中并将其作为答案发布。 – 2011-02-22 19:09:53

在Winforms中,有一个Screen类可用于获取有关连接到计算机的所有显示器的屏幕尺寸和颜色深度的数据。这里是文档页面:http://msdn.microsoft.com/en-us/library/system.windows.forms.screen.aspx

改变屏幕分辨率是棘手的。有一个解决方案第三方类包装本地代码,否则你会挂钩。使用其CResolution嵌套类将屏幕分辨率设置为新的高度和宽度;但要明白这样做只适用于显示器实际支持的高度/宽度组合(800x600,1024x768等,而不是817x435)。

对于检索的屏幕分辨率,你会想要使用System.Windows.Forms.Screen类。可以使用Screen.AllScreens属性访问系统上所有显示的集合,也可以使用Screen.PrimaryScreen属性访问主显示。

Screen类有一个名为Bounds的属性,您可以使用它来确定类的当前实例的分辨率。例如,要确定当前屏幕的分辨率:

Rectangle resolution = Screen.PrimaryScreen.Bounds; 

对于改变分辨率,事情变得更加复杂。 This article(或this one)提供了详细的实施和解释。希望这可以帮助。

+0

谢谢。这很容易。您可以使用这些命令使用resolution.Height和resolution.Width属性。 – 2015-04-18 17:01:59

如果你想收集的屏幕分辨率,你可以在WPF窗口中运行下面的代码(该窗口是this会提到什么):

System.Windows.Media.Matrix m = PresentationSource.FromVisual(this).CompositionTarget.TransformToDevice; 
Double dpiX = m.M11 * 96; 
Double dpiY = m.M22 * 96; 

在C#中,这是怎么弄的分辨率屏幕:

按一下按钮或形式负载:

string screenWidth = Screen.PrimaryScreen.Bounds.Width.ToString(); 
string screenHeight = Screen.PrimaryScreen.Bounds.Height.ToString(); 
Label1.Text = ("Resolution: " + screenWidth + "x" + screenHeight); 

此代码将完全在WPF工作。您可以在页面加载或按钮点击中使用它。

 string screenWidth =System.Windows.SystemParameters.PrimaryScreenWidth.ToString(); 

     string screenHeight = System.Windows.SystemParameters.PrimaryScreenHeight.ToString(); 

     txtResolution.Text ="Resolution : "+screenWidth + " X " + screenHeight;