缩放WindowsForm

时间:2015-11-25 08:08:04

标签: c# winforms visual-studio scale designer

基本上,我希望在通过拖动调整大小时,使用WindowsForm缩放所有内容(控件等),以便用户可以自己确定UI的大小。 图片并不完美,但我希望能解释一下:

Resize approximation

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

My Design

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

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

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

有没有干净的方法来做这一切?我是否必须使用LayoutPanels来获得干净的方式?

2 个答案:

答案 0 :(得分:1)

您确定要缩放这些文本框和标签吗?例如,文本框具有相当标准的高度。如果窗口太小以至于文本对于按钮/文本框等太大,您会有什么期望?

可调整大小窗口内容的典型调整大小逻辑略有不同。我宁愿为groupboxes创建一个无边框面板,并像这样堆栈/停靠所有内容:

before resize

如果我调整此窗口的大小,它将如下所示:

after resize

是的,我不喜欢按钮是否像这样重新调整大小。我只会使用Anchor = Left, Right,所以他们会保留自己的身高。并且不要忘记为表单设置正确的MinimumSize

答案 1 :(得分:-1)

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

在WPF中,一切都在ContentControl上,即布局面板。控制位置自动计算。

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