【问题标题】:high DPI problems高 DPI 问题
【发布时间】:2010-01-22 04:04:47
【问题描述】:

我的 .NET Windows 应用程序在高 dpi 设置下的显示存在问题。

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

基本上,标签最终会扩大大小以应对字体变大的情况,但其他控件的位置不会改变,我们最终会看到标签遮住了其他控件或彼此。

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

有什么建议吗?

提前致谢,

克里斯蒂安

【问题讨论】:

    标签: .net dpi winapp


    【解决方案1】:

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

    我注意到它处理垂直缩放比水平缩放更好,但即便如此它也远非完美。

    根据我的经验,只有当您执行以下两种操作之一时,缩放才是可靠的:

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

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

    在你的情况下,我可能会选择#2。根据屏幕截图,我认为将您的布局放入TableLayoutPanelFlowLayoutPanel 容器的组合中会很容易——甚至可能只有一个TableLayoutPanel

    【讨论】:

      【解决方案2】:

      您应该研究 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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 2011-08-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多