2010-11-08 133 views
19

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

如何:

  1. 阅读使用我的应用程序更改,然后返回到当前退出当前的分辨率

感谢, Furqan

回答

26

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调用的签名。谷歌搜索出现了this thread,虽然我没有验证他们提供的示例代码。

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

+5

+1 ...应用程序没有改变我的屏幕分辨率的业务!即使是游戏(习惯于?)将其彻底解决。 – 2010-11-08 10:12:51

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