C#.net picturebox动画效果,刷新图像的闪烁问题解决方法

来源:互联网 发布:unity3d是游戏特效么 编辑:程序博客网 时间:2024/06/05 16:15

在.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;    }
0 0
原创粉丝点击