OnPaint()函数 private void OnPaint(object sender, PaintEventArgs e)
{
System.Drawing.Graphics g = this.CreateGraphics();
for (int x = 0; x < 15; x++)
{
for (int y = 0; y < 15; y++)
{
if (checkerBoard[y, x] != None) DrawChess(new Point(x, y), checkerBoard[y, x]);
}
}
ReDrawNextPlayerMark();
base.OnPaint(e);
}
private void ReDrawNextPlayerMark()
{
System.Drawing.Graphics g = this.CreateGraphics();
imageList1.Draw(g, 2, 309, 20, 20, Player);
}
{
System.Drawing.Graphics g = this.CreateGraphics();
for (int x = 0; x < 15; x++)
{
for (int y = 0; y < 15; y++)
{
if (checkerBoard[y, x] != None) DrawChess(new Point(x, y), checkerBoard[y, x]);
}
}
ReDrawNextPlayerMark();
base.OnPaint(e);
}
private void ReDrawNextPlayerMark()
{
System.Drawing.Graphics g = this.CreateGraphics();
imageList1.Draw(g, 2, 309, 20, 20, Player);
}
然后 ReDrawNextPlayerMark函数中带一个参数(Graphic g),内部都操作这个g
循环了在Onpaint中不能使用this.CreateGraphics();
通过this.CreateGraphics();取得的对象再绘制的时候,会导致不断发生wm_paint消息
wm_paint消息的不断重复会导致不断的调研OnPaint()方法。。
这里有个无效区域和有效区域的概念在C#中:OnPaint对应SDK的BeginPaint()和EndPaint()
CreateGraphics()对应SDK的GetDC()