C # WinForm Drawing - how to clear and redraw
Here is a screenshot of my game. The left is my problem, it looks like the "old draw" still exists. On the right is what should be.
http://img682.imageshack.us/img682/1058/38995989.jpg
drawing code
Graphics g = e.Graphics;
for (int i = 1; i < 27; i += 1)
{
for (int j = 0; j < 18; j += 1)
{
ZPoint zp = zpoints[i, j];
if (zp != null)
{
g.DrawImage(zp.sprite_index, new Point(zp.x, zp.y));
Image arrow;
if (zp.sprite_index == spr_green_zpoint)
{
arrow = spr_green_arrows[zp.image_index];
}
else if (zp.sprite_index == spr_red_zpoint)
{
arrow = spr_red_arrows[zp.image_index];
}
else
{
arrow = spr_grey_arrows[zp.image_index];
}
g.DrawImage(arrow, new Point(zp.x - 4, zp.y - 4));
}
}
}
if (latest_p1 != -1 && latest_p2 != -1)
{
ZPoint zp = zpoints[latest_p1, latest_p2];
if (zp != null)
{
g.DrawImage(spr_focus, new Point(zp.x - 6, zp.y - 6));
}
}
+2
a source to share
2 answers
The class Control
has several methods related to redrawing:
-
Invalidate
- this method indicates a certain area of the control as invalid and will redraw it on the next drawing operation -
Update
- This method starts redrawing any invalid areas -
Refresh
- This method invalidates the entire control surface and redraws it immediately. Equivalent to invocationInvalidate()
andUpdate()
in immediate sequence.
+6
a source to share