码迷,mamicode.com
首页 > 其他好文 > 详细

控件的重绘和双缓冲技术

时间:2015-10-21 12:09:09      阅读:268      评论:0      收藏:0      [点我收藏+]

标签:

处理重绘和无效操作:

重新定制控件行为和外观

Void Invalidate();

void Invalidate ( Rectangle );

//使控件的特定区域无效并且向控件发送绘制的消息;

void Update();

//使控件重绘其工作区内的无效区域;

void Refresh();

//相当于 this.invalidate(true); this.Update();

 

双缓冲技术:

当数据量很大时,绘图可能需要几秒钟甚至更长的时间,而且有时还会出现闪烁现象,为了解决这些问题,可采用双缓冲技术来绘图。双缓冲即在内存中创建一个与屏幕绘图区域一致的对象,先将图形绘制到内存中的这个对象上,再一次性将这个对象上的图形拷贝到屏幕上,这样能大大加快绘图的速度。 

1.在内存中建立一块“虚拟画布”;

Bitmap bmp = new Bitmap(600, 600);

 

2.获取这块内存画布的Graphic引用;

Graphics g = Graphics.FromImage( bmp );

 

3.在这块内存画布上绘图;

g.FillEllipse( brush, i * 10, j * 10, 10 , 10);

g.DrawLine()  

g.DrawString()

//...

 

4.将内存画布画到窗口中,释放内存缓冲区;

this.CreateGraphics().DrawImage( bmp, 0, 0 );

 

注:在.net Framework 3以上版本中有DoubleBuffered属性,可以直接使用双缓冲技术

控件的重绘和双缓冲技术

标签:

原文地址:http://www.cnblogs.com/bincoding/p/4897126.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!