缩放窗体窗口

New*_*ger 4 c# scaling resize winforms

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

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

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

那么,是否有可能与表格做类似的事情?无论表格内部是什么,都能够扩大其规模.

She*_*ell 6

Windows窗体不提供任何功能来执行此操作.但是,您可以编写自己的代码并使表单分辨率独立.

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

码:

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;
}
Run Code Online (Sandbox Code Playgroud)

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