您的位置:首页 > 其它

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

2010-08-06 22:03 323 查看
在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对象用来做绘图,能提高不少效率。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: