C# 如何根据矩形所绘制的形状调整其大小?

C# 如何根据矩形所绘制的形状调整其大小?,c#,winforms,C#,Winforms,我有一个矩形,我正在一个表格上画。矩形已编码。我想根据窗体的大小调整该矩形的大小,也就是说,当窗体调整大小时,矩形的大小也会相应调整。我怎么做? 我是否需要改变绘制矩形的方式,顺便说一下,现在是这样的:矩形rect=新矩形(0,0,650,50); 我使用了Resize事件,在该事件中,我通过以下命令指定了新的大小:I did new size(),但这会使我的矩形从表单中消失。要做到这一点,您必须在表单的表单Resize事件中为矩形创建一个大小调整函数。要保持矩形比例相对于表单大小,您必须编写

我有一个矩形,我正在一个表格上画。矩形已编码。我想根据窗体的大小调整该矩形的大小,也就是说,当窗体调整大小时,矩形的大小也会相应调整。我怎么做? 我是否需要改变绘制矩形的方式,顺便说一下,现在是这样的:矩形rect=新矩形(0,0,650,50);
我使用了Resize事件,在该事件中,我通过以下命令指定了新的大小:I did new size(),但这会使我的矩形从表单中消失。

要做到这一点,您必须在表单的表单Resize事件中为矩形创建一个大小调整函数。要保持矩形比例相对于表单大小,您必须编写一些简单的数学代码。

在表单的OnPaint处理程序中添加以下内容:

rect.Width = this.Width;
rect.Height = this.Height;
这将使表单保持矩形

OnPaint事件应该如下所示:

    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);

        rect.Width = this.Width;
        rect.Height = this.Height;
    }

这将在每次重新绘制窗体时调整矩形的大小,包括调整大小。

您应该在覆盖OnPaint方法时绘制窗体的所有图形。如果要使矩形的大小相对于窗体的大小,则每次绘制矩形时都需要检查窗体的大小


您不应该对Resize事件执行任何操作(可能只是缓存矩形所需的大小,以避免每次调用OnPaint时都必须计算该大小)。

这将不起作用,因为必须使用OnPaint方法绘制矩形