无法使用创建图形进行绘制



我有一个面板,想在上面画画。而不使用其Paint事件。所以我尝试了这个,但它不起作用。

private void Form1_Load(object sender, EventArgs e)
{
Graphics g = panel1.CreateGraphics();
g.DrawRectangle(Pens.Black, 0, 0, 10, 10);
}

如果有人能给我提供解释和示例代码,那就太好了。

您使用CreateGraphicssynchronous的方式绘制某些东西。例如,绘制位图并将其保存到磁盘。可能是一个更好的方法,如果你添加一个事件处理程序到面板的Paint事件,在设计器或表单构造器:

panel1.Paint += this.OnPanel1_Paint;

并在事件中绘制:

private void OnPanel1_Paint(object sender, PaintEventArgs e)
{
var g = e.Graphics;
g.DrawRectangle(Pens.Black, 0, 0, 10, 10);
}

你不需要在这里处理这些图形,只画你想要的。

这样,当您需要强制重绘时(例如,您在面板中的每次点击上添加另一个矩形),您必须调用panel1.Invalidate();。此方法告诉Windows您需要重新绘制控件,并且Windows会尽快调用该事件。显然,你需要知道该画什么,这取决于你的应用程序。你可以有一个List的矩形,并在每次点击时添加一个新的矩形。然后,在OnPanel1_Paint方法中,您绘制所有列表矩形。

最新更新