【发布时间】:2016-02-27 22:28:24
【问题描述】:
基本上,我希望所有内容(控件等)在通过拖动调整其大小时与 WindowsForm 一起缩放,以便用户可以自己确定 UI 的大小。 图片并不完美,但我希望它能够解释它:
最简单的方法是使用 (Flow/Table)LayoutPanel 和适当的 Anchor/Drop 属性,但我觉得这限制了我的设计,目前看起来像这样:
我的想法是在调用 Resize() 时缩放所有组件:
foreach(Control c in Controls){
c.Scale(scaleFactor);
}
我的问题是:位置设置不正确,确定“scaleFactor”所需的四舍五入会导致不一致。
有没有一种干净的方法来做这一切?我必须使用 LayoutPanels 来获得干净的方式吗?
【问题讨论】:
-
不确定是否要重写所有内容,但 WPF 可以说让这类事情变得更容易
-
我们只有 2 个程序员,程序是工程师使用的(不一定要漂亮),使用视觉设计器非常好。目前我们只有 UI,但我担心 WPF 学习和编写会比较慢。
-
也许吧,虽然这可能是什么是可能的,什么是不可能的问题。 WinForms 不会轻易缩放字体,而 WPF 会。 WPF 中的一切都是transform。在 WinForms 中,您可以将所有内容呈现为屏幕外图像;炸掉它;并渲染它。虽然它是静态的,但遗憾的是不确定它有多大用处。 :(
-
你是在倒退。为什么用户想要改变窗口的大小?为了不使文本更具可读性,视力障碍适用于任何程序,用户只会增加 DPI,您无需做任何事情。我从您的 UI 设计中看到的唯一可能原因是在文本框中提供更多可用空间。这实现起来非常简单,只需使用正确的锚点。剩下要做的就是确保当他使窗口变小时它仍然可用,MinimumSize 和 AutoScroll 也很简单。
-
它将为用户提供一个一致的 UI,例如一个不改变比例的屏幕,而用户可以分配他认为合适的屏幕区域。然而;看到我的方法没有好的解决方案并看到其他方法的优势,我将创建带有布局的 UI。
标签: c# winforms visual-studio scale designer