2010-04-28 67 views
2

我已经在c#winforms中完成了一个项目。我想将应用程序在任何pc上运行时,将屏幕分辨率设置为1680 x 1050, 。怎么做 ?如何使用c#windows应用程序设置windows屏幕分辨率

+2

那么如果我的屏幕不支持该分辨率会发生什么? – 2010-04-28 08:03:03

+0

可能的重复http://stackoverflow.com/questions/215412/programmatically-change-screen-resolution – 2010-04-28 08:04:52

回答

5

前面已经提到,你不应该自动更改分辨率他人,导致用户将其设置为自己喜欢特定的分辨率(或他的作品硬件最好的)。

因此,不应更改分辨率,而应更改应用程序。使用TableLayoutPanel,FlowLayoutPanel和/或SplitContainer。设置控件的AnchorDock属性,并考虑在应用程序中设置每个控件的MinimumSizeMaximumSize

这样,您的应用程序可以自动缩放不同的分辨率,用户可以选择他喜欢的。

最后但并非最不重要的一点,您的应用程序不仅应该考虑关注用户选择的分辨率,还应该注意所选的dpi设置。在Windows UX Guide(网站592)中描述了您应该关注哪一个。

+0

@Downvoter:任何评论为什么downvote这? – Oliver 2012-10-16 14:24:56

+0

刚刚投了票。不要误会我的意思,你提供的答案非常丰富,但你没有回答这个问题。就我个人而言,我想知道这是一个我不打算分发的个人项目,所以其他人的显示器是否支持该决议并不是我的问题(我意识到原始的海报确实说“在任何pc上运行“,但对我来说,正确的答案应该给出上述建议,但仍然回答这个问题) – 2013-08-15 14:20:05

+0

@DarkHippo:在这种情况下,请不要投票。简单地问一个新问题,参考这个问题,并说出你的情况有什么不同。 – Oliver 2013-08-16 06:06:35

4

我会建议你不要做这些事情。屏幕分辨率由用户设置,这是你不应该自动改变的。这与改变颜色方案,声音方案或任何其他基于用户的偏好一样糟糕,而用户不知道任何事情,更不用说想让程序去做。至少显示一个对话框并让用户选择要做什么。
话虽如此,here's an example on how to do this

3

那么,他不是说他的应用程序将改变其他系统的决议。您不应该改变其他人电脑的屏幕分辨率;但是,用户可能需要通过单独的实用程序更改自己的分辨率(出于不同的原因)。这是我现在的情况,所以我必须在C#中编写一个简单的实用程序来使用InteropServices来完成此操作。调用ChangeDisplaySettings。这是声明:

[DllImport("user32.dll")] 
public static extern int ChangeDisplaySettings(
ref DEVMODE devMode, int flags);