控件的重绘和双缓冲技术

处理重绘和无效操作:

重新定制控件行为和外观

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属性,可以直接使用双缓冲技术

posted @ 2015-10-21 10:38  致林  阅读(274)  评论(0编辑  收藏  举报