Window Mobile中Panel上绘图的闪烁消除方法

在PC上利用做开发时,通常利用双缓冲技术来去除绘图时发生的闪烁问题。但在Windows Mobile的开发中,Form本身去掉了DoubleBuffered属性,而利用双缓冲问题也往往不能得到很好的去除闪烁的效果。

日前在http://dev.10086.cn/cmdn/wiki/index.php?doc-view-2214.html看到了下述方法,非常有效的解决了在Panel上绘图的闪烁问题。

//PaintPanel.cs

using System;
using System.Collections.Generic;
using System.Text;

namespace Test

{
    class PaintPanel: System.Windows.Forms.Panel
    {
        protected override void OnPaintBackground(System.Windows.Forms.PaintEventArgs e)
        {
            //不重绘背景
        }
    }
}

然后用PaintPanel代替原来的Panel,并在Panel的Paint函数中使用双缓冲方式绘图,即:

Bitmap  bmp = new Bitmap(width, height);

Graphic gBmp = Graphics.FromImage(bmp);

gBmp.DrawXXX(………..

g.DrawImage(…..

bmp.Dispose();

 

但由于Bitmap每次分配会消耗较多的时间,对于需要实时(或准实时)显示的应用,最好定义一个全局的Bitmap对象用来做绘图,能提高不少效率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值