高DPI问题

时间:2010-01-22 04:04:47

标签: .net dpi winapp

我在高dpi设置下显示.NET Windows应用程序时遇到问题。

所有表单都设置为AutoScaleMode = DPI,但这并不能解决所有问题。

基本上标签最终扩大尺寸以应对更大的字体,但其他控件的位置不会改变,我们最终会使用标签遮盖其他控件或彼此。

屏幕应如下所示:http://www.manageinvest.com/good.jpg ..并且在高DPI上它最终看起来像这样:bad.jpg (这是我的第一篇文章,所以我只允许一个链接)

有什么建议吗?

提前致谢,

克里斯蒂安

3 个答案:

答案 0 :(得分:6)

理论上,Winforms中的字体和DPI缩放是自动的。在实践中......不是那么多。

我注意到它在垂直缩放方面比在水平方向上更好地应对,但即便如此,它也远非完美。

根据我的经验,只有当你做两件事之一时,缩放才是可靠的:

  1. 根本不要使用设计师。这非常痛苦,但它确实为您提供了对布局的必要控制。

  2. 使用内置布局控件 - 特别是FlowLayoutPanelTableLayoutPanel。这些家伙是你最好的朋友;我很少在没有它们的情况下在Winforms中做任何

  3. 在你的情况下,我可能会选择#2。根据屏幕截图,我认为将您的布局整合到TableLayoutPanelFlowLayoutPanel容器的组合中非常容易 - 甚至可能只有一个TableLayoutPanel

答案 1 :(得分:3)

您应该查看AutoScaleMode和AutoSize功能。结合对接能力,你应该能够达到你想要的效果。

我有一篇非常好的文章,但链接已经死了......无论如何,这应该让你开始:

http://msdn.microsoft.com/en-us/library/ms229605.aspx

http://www.sellsbrothers.com/writing/winformsAutoScaling.htm

http://msdn.microsoft.com/en-us/library/system.windows.forms.autoscalemode.aspx

答案 2 :(得分:1)

这可能无法解决您的问题。

但我们学会了标签和文本控件应垂直堆叠的困难方法,即将文本框放在标签下方,而不是放在标签旁边。这为我们解决了很多问题,包括支持多种语言,因为不同语言的文本宽度可能比英文文本更多