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:



+6


a source


If your game never falls short of the operating system, it may not draw very well. Where the drawing work is done. If you insert a call to Invalidate () and "Thread.Sleep (0);" into your code where you want to update the screen, which might help.



0


a source







All Articles