项目-坦克大战笔记-让窗体不因为刷新闪烁

在我们上一节代码写完后启动窗体会发现绘制的墙体总是闪烁,这是因为每一帧地图都在重新绘制,而每一帧除了绘制墙体之外还会给地图刷一层黑色来重置地图,由于刷新地图和绘制墙体属于先后顺序,所以在窗体显示中墙体会被覆盖然后又重新出现,这时候我们可以定义一个临时使用的图片,将刷新后的背景和新绘制的墙体全部先绘制到图片上,然后将图片一次性绘制到窗体画布上,这样就不会出现黑色背景和墙体交替出现的情况了。

首先需要定义一个图片变量

 private static Bitmap bmp;//创建一个bitmap图片变量

然后给图片变量实例化设置大小

bmp=new Bitmap(450,450);//实例化图片,确定图片大小

用画布类中的方法将这个临时图片转换为临时画布方便绘制

 Graphics bmpg = Graphics.FromImage(bmp);//将创建的图片生成一个画布

将原本绘制函数传过去的画布变量改成这张临时画布

tankthread.g = bmpg;//让游戏运行类中的g也获取到当前窗体画布组件

最后,在临时画布绘制调用一次后在窗体画布上将临时画布绘制的图片一口气绘制出来,此操作在每帧调用一次的位置

g.DrawImage(bmp,0,0);//将绘制的图片绘制到窗体画布上

将窗体画布和临时图片全部变成static静态类型方便后续调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值