日期:2014-05-17  浏览次数:20841 次

终于解决了Mibole C# 闪烁问题

原文:?? http://www.3geye.net/?3/viewspace-3234

?

昨天晚上试验了下,发现双缓冲来是不起作用,很是郁闷。怎么办了,今天看了一篇文章才恍然大悟。。3GEYE|Q~@$` PS,c
3GEYE7t_a6M`#c)I$|E
我想你看了这篇文章也是很容易理解的。3GEYE_?r?nP ]*@ ?

5A3]3G?S9B?`u3下面是叶帆的一篇文章点醒了我。3GEYE;Q,hc S5b2\)c ua

1}%~@` g2f3?WinCE 4.2(.net精简框架集)下的图形双缓存处理????CSDN Blog推出文章指数概念,文章指数是对Blog文章综合评分后推算出的,综合评分项分别是该文章的点击量,回复次数,被网摘收录数量,文章长度和文章类型;满分100,每月更新一次。??CSDN Blog推出文章指数概念,文章指数是对Blog文章综合评分后推算出的,综合评分项分别是该文章的点击量,回复次数,被网摘收录数量,文章长度和文章类型;满分100,每月更新一次。

????? 在上位机Windows操作平台( .net 2.0框架集)下实现图形双缓存有很多办法,每种办法在上位机都有很好的效果,但是很不幸,在WinCE4.2操作系统(.net 2.0精简框架集)下这些方法要么不支持,要么效果很差(还是闪烁的厉害)。

在上位机中,一般都有这么几种办法:

1、应用程序中使用双缓冲的最简便的方法是使用.NET Framework为窗体和控件提供的默认双缓冲,通过将DoubleBuffered属性设置为True即可。

2、通过SetStyle修改控件属性。

?public void EnableDoubleBuffering()

{

?? // Set the value of the double-buffering style bits to true.
?? this.SetStyle(ControlStyles.DoubleBuffer |
????? ControlStyles.UserPaint |
????? ControlStyles.AllPaintingInWmPaint,
????? true);
?? this.UpdateStyles();

}

3、比较经典的一种如下:重载OnPaint函数

protected override void OnPaint(PaintEventArgs e)
|'B:lM?k wCg3??{3GEYE?P(i#A$z9U].E#W

a%r4Et:B)o^[-_F3???System.Drawing.Bitmap b = new Bitmap(this.Width,this.Height);//
双缓冲技术,先将