Windows Form游戏局部刷新

    当我们制作动态的游戏时,需要经常刷新,可能会遇到游戏页面刷新非常厉害的问题。

    为了解决刷新的问题。在Windows Form里,常常有多种解决方案:

   1.可以采取双缓冲来取消闪烁:

            //设置双缓冲画图
            this.DoubleBuffered = true;
            SetStyle(ControlStyles.UserPaint, true);
            SetStyle(ControlStyles.AllPaintingInWmPaint, true);
            SetStyle(ControlStyles.DoubleBuffer, true);

     2.当然有一个叫做PictureBox控件加载后,会自动实现双缓冲的效果,游戏画面将不再闪烁。

 

      当游戏图片加载非常频繁时,我们当然希望实现局部的刷新,而不是整张图都刷新,这样效率是多么的低。

如下图,我山寨kingdom rush做的塔防小游戏,当游戏运行时,我们只需要人物动起来,而背景是静止的,不需要刷新的。

怎样实现局部刷新呢?

     思想: 第一步,重绘人物移动前的位置;  

              第二步,人物移动......

              第三步,重绘人物移动后的位置;

    具体实现,使用invalidate函数来实现,invalidate函数形式有多种,默认的invalidate();是默认刷新整个客户区屏幕,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值