1. 程式人生 > >C#.net picturebox動畫效果,重新整理影象的閃爍問題解決方法

C#.net picturebox動畫效果,重新整理影象的閃爍問題解決方法

在.net的控制元件上用timer控制重新整理影象,可以形成動畫效果,但是有個問題就是會閃爍。

比如picturebox控制元件名字是picshow,我們要重新整理picshow的影象,一般是怎麼做呢?

一般是用Graphics物件的clear來清除,然後將要畫的東西一點點畫上去。這樣的方法中間存在一個clear過程,導致會有一瞬間的閃爍。

一個簡單的解決方法是不用clear:先建立點陣圖,然後將要畫的東西畫到點陣圖上,最後把點陣圖整個畫到picshow上。這樣子會好很多。

下面給一段示例程式碼

    public void GameShow() //畫出遊戲畫面
    {
        //建立點陣圖
        Bitmap bmp = new Bitmap(600, 600);//點陣圖大小600*600
        //建立點陣圖的Graphics物件
        Graphics gr1 = Graphics.FromImage(bmp);
        //將點陣圖清黑
        gr1.Clear(Color.Black);

        //在點陣圖上畫出要畫的東西
        if (myBall != null)
        {
            myBall.Show(gr1);
        }
        for (int i = 0; i < bullnum; i++)
        {
            if (bull[i] != null) bull[i].Show(gr1);
        }
        if (a != null)
        {
            a.Show(gr1);
        }
        //建立Picshow的Graphics物件
        Graphics gr2 = PicShow.CreateGraphics();
        //將bmp畫到picshow上
        gr2.DrawImage(bmp, 0, 0);
        //釋放記憶體!!這一步必須要,不然記憶體會爆炸的
        bmp.Dispose();
        bmp = null;
        gr1.Dispose();
        gr1 = null;
        gr2.Dispose();
        gr2 = null;
    }