当前位置:  开发笔记 > 编程语言 > 正文

字体大小独立UI:当我切换到120 DPI时,一切都破了?

如何解决《字体大小独立UI:当我切换到120DPI时,一切都破了?》经验,为你挑选了1个好方法。

所以我正在阅读那些在另一个问题中链接到的Windows Vista UI指南,并且他们提到您应该能够在切换到120 DPI后继续存在.好吧,我安装了我的应用程序,启动了我方便的虚拟机,我们得到了什么... AAAAGH !!! 大规模的UI失败!

一切都是乱七八糟的:一些容器对于他们的文本来说不够大; 一些"彼此相邻"的控件现在都被挤压在一起/分开; 有些按钮不够高; 我的ListView专栏不够广...... eeek.

这听起来像是一种完全不同的方法.我之前的一个基本上是使用VS2008 Windows窗体设计器来创建一个基于像素的布局.我可以看到,如果我坚持使用Windows Forms,FlowLayoutPanels会有所帮助,尽管我发现它们在过去相当不灵活.它们也没有解决容器(例如表格本身)不够大的问题; 大概有办法做到这一点?也许那个AutoSize属性?

这也可能表明是时候跳槽到WPF了; 我的印象是它专门为这种东西而设计.

基本问题似乎归结为以下几点:

如果我坚持使用Windows窗体,那么实现独立于字体大小的布局有哪些技巧可以在用户设置大字体或将显示设置为120 DPI后继续存在?

WPF在这方面是否具有显着的优势,如果是这样,你能否试着说服我这是值得转换的?

对于与字体大小无关的布局,是否存在任何通用的"最佳实践",无论是在.NET堆栈中还是在一般情况下?

OwenP.. 11

了解AnchorDock属性如何在控件上工作,留下任何可以单独使用AutoSize的东西,并尽可能使用TableLayoutPanel.

如果你做这三件事,你将在Windows Forms中获得很多WPF设计经验.精心设计的产品TableLayoutPanel将尽量调整控件尺寸,使其适合表格.结合AutoSize控件,对接和Soeren Kuklau提到的AutoScaleMode,您应该能够制作出可以很好地扩展的东西.如果没有,您的表单可能只有太多的控件; 考虑将其拆分为标签页,浮动工具箱或其他一些空间.

在WPF中,它更容易,因为自动调整大小控件的概念是内置的; 在大多数情况下,如果您使用坐标对放置WPF元素,那么您做错了.尽管如此,你无法改变这样一个事实,即在较低的分辨率下,它不需要花费很多120 dpi的文字来填满屏幕.有时问题不是你的布局,而是试图将太多的东西放入一个小空间.



1> OwenP..:

了解AnchorDock属性如何在控件上工作,留下任何可以单独使用AutoSize的东西,并尽可能使用TableLayoutPanel.

如果你做这三件事,你将在Windows Forms中获得很多WPF设计经验.精心设计的产品TableLayoutPanel将尽量调整控件尺寸,使其适合表格.结合AutoSize控件,对接和Soeren Kuklau提到的AutoScaleMode,您应该能够制作出可以很好地扩展的东西.如果没有,您的表单可能只有太多的控件; 考虑将其拆分为标签页,浮动工具箱或其他一些空间.

在WPF中,它更容易,因为自动调整大小控件的概念是内置的; 在大多数情况下,如果您使用坐标对放置WPF元素,那么您做错了.尽管如此,你无法改变这样一个事实,即在较低的分辨率下,它不需要花费很多120 dpi的文字来填满屏幕.有时问题不是你的布局,而是试图将太多的东西放入一个小空间.


@romkyns:除非您的应用程序明确指出它是"高dpi意识",否则您的应用程序将获得与所有其他有缺陷的应用程序相同的kludge修复程序.当你要求当前的dpi你的应用程序被骗(告诉它是96),并且显卡会为你扩展你的表格 - 使它变得模糊.微软放弃了试图让开发人员做他们应该做的事情 - 这就是为什么每个人都必须选择**缩放.Google:`dpiAware`清单.
推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有