.net - 字体大小独立的 UI : everything broke when I switched to 120 DPI?

标签 .net wpf winforms user-interface fonts

因此,我正在阅读某人在另一个问题中链接到的那些 Windows Vista UI 指南,他们提到您应该能够在切换到 120 DPI 后幸存下来。好吧,我在安装了应用程序的情况下启动了我方便的 VM,然后我们会得到什么... AAAAGH !!!大量用户界面失败!

一切都乱七八糟:有些容器不足以容纳它们的文本;一些“彼此相邻”的控件现在都被挤压在一起/分开;有些按钮不够高;我的 ListView列不够宽... eeek。

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

这也可能表明是时候跳槽到 WPF 了;我的印象是它是专门为这种事情设计的。

基本问题似乎归结为这些:

  • 如果我坚持使用 Windows 窗体,那么实现与字体大小无关的布局的所有技巧是什么,该布局可以在用户将其字体设置为大或将显示设置为 120 DPI 时幸存下来?
  • WPF 在这方面是否具有显着优势,如果是,您能否说服我值得转换?
  • 无论是在 .NET 堆栈中还是在一般情况下,对于与字体大小无关的布局,是否有任何通用的“最佳实践”?
  • 最佳答案

    了解 Anchor 和 Dock 属性如何在您的控件上工作,留下任何可以自动调整大小的内容,并使用 TableLayoutPanel什么时候可以。

    如果你做这三件事,你就会在 Windows 窗体中获得很多 WPF 设计体验。精心设计的TableLayoutPanel将尽最大努力调整控件的大小,使其适合表单。结合 AutoSize 控件、停靠和 Soeren Kuklau 提到的 AutoScaleMode,您应该能够制作出可以很好缩放的东西。如果没有,您的表单可能有太多控件;考虑将其拆分为标签页、 float 工具箱或其他一些空间。

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

    关于.net - 字体大小独立的 UI : everything broke when I switched to 120 DPI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50528/

    相关文章:

    c# - 启动新进程时如何指定带空格的参数

    wpf - TextOptions.TextFormattingMode 影响具有粗体字重的文本

    c# - .NET WinForms - 如何监听系统注销、用户锁定、休眠启动和系统恢复的事件?

    c# - 如何设置热键快捷方式 "Ctrl + Plus Sign"

    c# - 如何在功能运行时更新表单

    asp.net - 为什么 ASP.NET Web 服务占用如此多的内存?

    c# - .Net 应用程序根据传递的时区语言读取时区注册表

    c# - View 在从区域中移除后未被处置

    c# - WPF:在附加属性中,如何等待可视化树正确加载?

    c# - Matlab与.NET 4.0数据通信