获得屏幕分辨率

时间:2010-11-08 09:46:41

标签: vb.net

我需要使用我的应用程序更改屏幕分辨率。

如何:

  1. 阅读当前分辨率
  2. 使用我的应用程序更改它,然后在退出时返回当前状态。
  3. 谢谢, Furqan

2 个答案:

答案 0 :(得分:31)

1)如何阅读当前的屏幕分辨率?

获取当前屏幕分辨率非常简单,并且无需深入研究GetSystemMetrics API等内容即可构建到框架中。 Screen类包含有关连接到系统的所有显示设备的信息。因此,要确定主监视器的分辨率,可以使用以下内容:

 Dim screenWidth as Integer = Screen.PrimaryScreen.Bounds.Width
 Dim screenHeight as Integer = Screen.PrimaryScreen.Bounds.Height

要处理多个监视器,请查看Screen.AllScreens属性,该属性返回与连接到系统的每个显示对应的Screen个对象数组。然后,您可以通过循环遍历Screen对象数组来确定(使用上面的代码)连接到计算机的每个显示器的分辨率。

2)如何从VB.NET应用程序更改当前屏幕分辨率?

更改屏幕分辨率有点困难。在继续之前,我会提醒您,调整用户显示分辨率的应用程序是意外的,可能是creates a hostile user environment。我知道我不会使用在未经许可的情况下改变我的屏幕分辨率的应用程序,而且我认为使用一个要求我完全执行此操作的应用程序很长。如果您正在尝试制作屏幕保护程序,那么可能有更好,更简单的方法来完成您想要的操作。话虽如此,如果您愿意从Windows API中调用一些函数,可以从VB.NET中完成。

如果您只关心单个监视器的情况,最简单的方法是使用ChangeDisplaySettings功能,该功能允许您指定默认显示的图形模式(仅限用户的主监视器)。

要处理多个显示器的情况,您需要使用EnumDisplayDevices功能获取有关连接到计算机的所有显示设备的信息,以及ChangeDisplaySettingsEx功能来更改特定显示器屏幕。

查看pinvoke.net,了解如何在VB.NET中声明Windows API调用的签名。虽然我尚未验证他们提供的示例代码,但Google搜索出现了this thread

要仅在应用程序运行时修改屏幕分辨率,然后在用户退出程序时将其恢复,您需要先保存当前屏幕设置,然后再修改它们(然后使用相同的方法调用) )当你的申请退出时。

答案 1 :(得分:4)

如何获取当前屏幕分辨率

Public Function ScreenResolution() As String
        Dim intX As Integer = Screen.PrimaryScreen.Bounds.Width
        Dim intY As Integer = Screen.PrimaryScreen.Bounds.Height
        Return intX & " × " & intY
End Function

如何更改当前屏幕分辨率 - solution