【发布时间】:2012-11-16 00:47:23
【问题描述】:
我在 c# winforms 中做过一个项目。我想将屏幕的分辨率设置为 1680 x 1050, 当应用程序在任何电脑上运行时。怎么办?
【问题讨论】:
-
如果我的屏幕不支持该分辨率会怎样?
标签: c#
我在 c# winforms 中做过一个项目。我想将屏幕的分辨率设置为 1680 x 1050, 当应用程序在任何电脑上运行时。怎么办?
【问题讨论】:
标签: c#
正如其他人已经提到的,您不应该自动更改分辨率,因为用户将其设置为他喜欢的特定分辨率(或者他的硬件工作得最好)。
因此,您应该更改应用程序,而不是更改分辨率。使用TableLayoutPanel、FlowLayoutPanel 和/或SplitContainer。设置控件的Anchor 和Dock 属性,并考虑设置应用程序中每个控件的MinimumSize 和MaximumSize。
这样您的应用程序可以在不同的分辨率之间自动缩放,用户可以选择他喜欢的分辨率。
最后但同样重要的是,您的应用程序不仅应该考虑用户选择的分辨率,还应该考虑选择的 dpi 设置。 Windows UX Guide(站点 592)中描述了您应该注意哪一个。
【讨论】:
我建议你不要做这些事情。屏幕分辨率由用户设置,您不应自动更改。这与更改配色方案、声音方案或任何其他基于用户的偏好一样糟糕,而用户对此一无所知,更不用说让您的程序去做了。至少显示一个对话框,让用户选择要做什么。
话虽如此,here's an example on how to do this.
【讨论】:
好吧,他并不是说他的应用程序会改变其他系统的分辨率。你不应该改变别人电脑的屏幕分辨率;但是,用户可能需要通过单独的实用程序更改自己的分辨率(出于不同的原因)。这就是我现在的情况,所以我必须用 C# 编写一个简单的实用程序来通过使用 InteropServices 来完成它。调用 ChangeDisplaySettings。这是声明:
[DllImport("user32.dll")]
public static extern int ChangeDisplaySettings(
ref DEVMODE devMode, int flags);
【讨论】: