我正在尝试使用C#在WinForms项目中绘制一个矩形。我在表单的Paint事件上绘制矩形:
private void onPaintHandler(object sender, PaintEventArgs e) {
using (Pen pen = new Pen(Color.Black, 1)) {
Brush brush = new SolidBrush(Color.Gray);
e.Graphics.FillRectangle(brush, 0, this.Height - 100, this.Width, 100);
e.Graphics.DrawRectangle(pen, -1, this.Height - 100, this.Width, 100);
brush.Dispose();
pen.Dispose();
}
}
我有兴趣能够移动矩形。如果我在上面的代码中在运行时更改位置值,我会看到在多个位置绘制的相同矩形,但实际上并没有"移动"。
感谢您的时间。
答案 0 :(得分:1)
您需要持久化类变量中的坐标
并在您更改时调用Invalidate()
。
这将导致初始Paint
事件触发,除了Windows注意到的时间,控件或表单的表面不再有效。