【发布时间】:2010-06-29 19:32:36
【问题描述】:
我有一个正在表单上绘制的矩形。矩形已编码。我想根据表单的大小调整该矩形的大小,即当表单调整大小时,矩形会相应地调整大小。我该怎么做? 我是否需要更改绘制矩形的方式,顺便说一下,现在是这样的: Rectangle rect = new Rectangle(0, 0, 650, 50); 我使用了 Resize 事件,在其中我分配了新的大小,我做了 new Size() 但这使我的矩形从表单中消失了。
【问题讨论】:
我有一个正在表单上绘制的矩形。矩形已编码。我想根据表单的大小调整该矩形的大小,即当表单调整大小时,矩形会相应地调整大小。我该怎么做? 我是否需要更改绘制矩形的方式,顺便说一下,现在是这样的: Rectangle rect = new Rectangle(0, 0, 650, 50); 我使用了 Resize 事件,在其中我分配了新的大小,我做了 new Size() 但这使我的矩形从表单中消失了。
【问题讨论】:
在表单的 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 时都必须计算该大小)。
【讨论】:
为此,您必须在表单的 Form Resize 事件中为矩形创建一个调整大小的函数。为了保持矩形比例相对于表单大小,您必须编写一些简单的数学代码。
【讨论】: