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;
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值