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对象用来做绘图,能提高不少效率。
日前在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对象用来做绘图,能提高不少效率。
相关文章推荐
- VC使用双缓冲避免绘图闪烁的正确使用方法【转】
- 双缓冲原理在awt和swing中实现消除闪烁的方法
- 利用CMemDC画图的两种方法(解决绘图闪烁)
- ddraw 视频下绘图 不闪烁的方法
- GDI+ 绘图闪烁解决方法
- java双缓冲原理和实现 消除闪烁的常用方法
- C#中解决Panel等控件闪烁的方法
- [转] vc绘图时如何消除闪烁
- VC使用双缓冲避免绘图闪烁的正确使用方法【转】
- vc绘图时如何消除闪烁(zz)
- VC 消除绘图闪烁
- 如何消除vc编程界面屏幕闪烁的方法
- C#无闪烁绘图方法
- 双重绘图缓冲技术,消除gdi绘图闪烁现象
- C# 绘图中的图片闪烁问题解决方法的使用结果
- 如何消除vc屏幕闪烁的方法
- java中动画消除闪烁的两个方法
- ExtJs TreePanel使用TreeLoader在IE下无法正常加载显示的解决方法
- 解决canvas绘图很虚的方法
- JS 使用 window对象的print方法css实现分页打印