使用我当前的显示器,我更喜欢每英寸120像素的DPI设置(窗口建议默认设置)。但是,在设计表单后,它通常会在不使用每英寸120像素的系统上错误地布局。
我想知道,每当我使用设计师时,是否有必要将显示设置设置为每英寸96像素?
此外,当其他开发人员具有不同的DPI时,存在一些问题。他们在设计器中打开一个表单并移动类似文本编辑控件的东西,然后突然发现它自动调整大小。然后,有一个控件与其他控件的尺寸不同,我们一团糟。
P.S。我看过相关的帖子。他们都很有趣,但没有回答我的问题。
How to control the font DPI in .NET WinForms app
C# WinForms disable DPI scaling
答案 0 :(得分:4)
没有。使用WinForms设计器时,不需要始终将DPI设置为96。
如果将AutoScaleMode属性设置为Dpi,则设计器会将当前系统Dpi写入表单的AutoScaleDimensions属性中的designer.cs文件中。当设计器用于具有不同Dpi的系统时,此信息将用于重新缩放表单,设计器可用于不同的Dpi。
当我尝试其他缩放模式时,这似乎效果不佳。 “无”意味着控件不会在运行时缩放,“字体”似乎会出现舍入错误,当显示设置Dpi发生变化时,控件大小可能会略有变化而导致错误。
我还发现,对于添加到表单的UserControl,最好将其AutoScaleMode设置为Inherit。如果你使用Dpi,那么它上面的控件会被重新缩放两次,最终会被错误地布局。
经过几个小时的实验和互联网搜索,我找到了上面的指导原则,我发现了以下两篇文章:
http://msdn.microsoft.com/en-us/library/ms229605.aspx
和
http://kbalertz.com/967578/Child-controls-UserControl-clipped-system-lower.aspx
答案 1 :(得分:1)
我认为将dpi永久设置为不同值会对您有所帮助。问题是当您更改dpi时会出现问题,即您拥有的表单布局无法处理不同的dpi。
我没有绝对的解决方案,除了您应该使用不同的dpis进行测试,看看它是否会导致表单显示出现问题。找出导致问题的原因并不难,你会很快学会避免什么。