缩放窗口窗体

Scale WindowsForm

基本上,我希望所有内容(控件等)在通过拖动调整大小时随 WindowsForm 一起缩放,以便用户可以自己确定 UI 的大小。 图片不够完美,希望能说明问题:

最简单的方法是使用 (Flow/Table)LayoutPanel 和适当的 Anchor/Drop 属性,但我觉得这限制了我的设计,目前看起来像这样:

我的想法是在调用 Resize() 时缩放所有组件:

foreach(Control c in Controls){
            c.Scale(scaleFactor);
        }

我的问题是:位置设置不正确,确定 'scaleFactor' 所需的舍入导致不一致。

有没有一种干净的方法可以做到这一切?我是否必须使用 LayoutPanels 才能获得干净的方式?

最简单干净的方法是使用布局面板。
很难对控件的位置进行编码,这取决于先前控件的位置和大小(当您知道控件的顺序时会出现这种情况)。

在 WPF 中,所有内容都在布局面板的 ContentControl 上。控件的位置是自动计算的。

另一个问题可能是缩放组合框中的字体或字形图标。在 WPF 中这个最简单且受支持。

您确定要同时缩放那些文本框和标签吗?例如,文本框具有相当标准的高度。如果 window 太小以至于文本对于 buttons/text 框等来说太大了,你会怎么想?

可调整大小的内容的典型调整逻辑 window 有点不同。我宁愿为组框创建一个无边框面板,stack/dock 一切都像这样:

如果我调整这个 window 的大小,它将看起来像这样:

顺便说一句,我不喜欢这样调整按钮的大小。我只会为他们使用 Anchor = Left, Right 这样他们就可以保持他们的身高。并且不要忘记为表单设置适当的 MinimumSize