【问题标题】:How to resize a rectangle according to the form it is drawn on?如何根据绘制的形式调整矩形的大小?
【发布时间】:2010-06-29 19:32:36
【问题描述】:

我有一个正在表单上绘制的矩形。矩形已编码。我想根据表单的大小调整该矩形的大小,即当表单调整大小时,矩形会相应地调整大小。我该怎么做? 我是否需要更改绘制矩形的方式,顺便说一下,现在是这样的: Rectangle rect = new Rectangle(0, 0, 650, 50); 我使用了 Resize 事件,在其中我分配了新的大小,我做了 new Size() 但这使我的矩形从表单中消失了。

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    在表单的 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;
        }
    

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

    【讨论】:

      【解决方案2】:

      您应该在重写 OnPaint 方法时完成所有表单的绘制。如果要使矩形的大小相对于窗体的大小,则每次绘制矩形时都需要检查窗体的大小。

      您不应该对 Resize 事件做任何事情(也许只是缓存矩形所需的大小以避免每次调用 OnPaint 时都必须计算该大小)。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 这不起作用,因为矩形必须在 OnPaint 方法中绘制
        最近更新 更多