缩放窗口窗体

可以根据窗口大小准备窗体窗口窗口来调整所有元素的大小/重新定位,但我正在尝试做一些不同的事情。

是否有可能以某种方式实际缩放窗口以及内部的所有元素,而不管它们的位置,属性等?

基本上你在某些图形编辑器中缩放图片的方式 – 你可以拉伸或缩小它,但是这张图片上的内容并不重要。

那么,是否有可能与表格做类似的事情? 无论表格内部是什么,都可以扩展其大小。

Windows窗体不提供任何function来执行此操作。 但是,您可以编写自己的代码并使表单解析独立。

这不是一个让窗体独立于分辨率的完整示例,但是,您可以从这里获得逻辑。 当您快速调整窗口大小时,以下代码会产生问题。

码:

private Size oldSize; private void Form1_Load(System.Object sender, System.EventArgs e) { oldSize = base.Size; } protected override void OnResize(System.EventArgs e) { base.OnResize(e); foreach (Control cnt in this.Controls) { ResizeAll(cnt, base.Size); } oldSize = base.Size; } private void ResizeAll(Control cnt, Size newSize) { int iWidth = newSize.Width - oldSize.Width; cnt.Left += (cnt.Left * iWidth) / oldSize.Width; cnt.Width += (cnt.Width * iWidth) / oldSize.Width; int iHeight = newSize.Height - oldSize.Height; cnt.Top += (cnt.Top * iHeight) / oldSize.Height; cnt.Height += (cnt.Height * iHeight) / oldSize.Height; } 

否则,您可以使用任何第三方控件,如DevExpress Tool。 LayoutControl提供相同的设施。 您可以在运行时显示和隐藏任何控件而不留空格。

查看自.NET 2.0以来可用的Control.Scale方法。