利用双缓存技术解决gdi画图及刷新问题

利用双缓存技术解决gdi画图及刷新问题

ID:18771876

大小:104.50 KB

页数:3页

时间:2018-09-23

利用双缓存技术解决gdi画图及刷新问题_第1页
利用双缓存技术解决gdi画图及刷新问题_第2页
利用双缓存技术解决gdi画图及刷新问题_第3页
资源描述:

《利用双缓存技术解决gdi画图及刷新问题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、利用双缓存技术提高GDI+的绘图效果摘要在进行图像处理的软件中,一般的图形处理程序需要大量的绘图操作,首要解决的就是绘图的效率和效果问题:前者表现在性能方面,是否有延迟,一个小小的交互操作是否要等上几秒才能看到结果;后者表现在重新绘制或刷新的过程中出现闪烁?本文主要介绍GDI+程序中引用双缓冲技术以解决重绘时出现的闪烁问题—提高绘图效果。关键字:GDI+;双缓存;快速;缓存位图;效果引言在使用GDI+的实际的绘图中,绘图窗口内容或大小每改变一次,都要调用Paint事件进行重绘操作,该操作会使画面重新刷新一次以维持窗口正常显示。这样

2、的效率非常低,不仅达不到性能要求,而且还可能会出现闪烁的现象。刷新过程中会导致所有图元重新绘制,而各个图元的重绘操作并不会导致Paint事件发生,因此窗口的每一次刷新只会调用Paint事件一次。窗口刷新一次的过程中,每一个图元的重绘都会立即显示到窗口,因此整个窗口中,只要是图元所在的位置,都在刷新,而刷新的时间是有差别的,闪烁现象自然会出现。所以说,此时导致窗口闪烁现象的关键因素并不在于Paint事件调用的次数多少,而在于各个图元的重绘。根据以上分析可知,当图元数目不多时,窗口刷新的位置也不多,窗口闪烁效果并不严重;当图元数目较多

3、时,绘图窗口进行重绘的图元数量增加,绘图窗口每一次刷新都会导致较多的图元重新绘制,窗口的较多位置都在刷新,闪烁现象自然就会越来越严重。特别是图元比较大绘制时间比较长时,闪烁问题会更加严重,因为时间延迟会更长。1、双缓存技术为了解决画图的效率问题,我们引进了双缓存技术,双缓冲技术早在GDI的程序开发中,就已经开始使用。在普通的绘图模式下,图像处理程序是按照设计的顺序,将被绘制的元素一个接一个地在目标设备上进行绘制。何谓“双缓冲”?它的基本原理就是:先在内存中开辟一块虚拟画布,然后将所有需要画的图形先画在这块“虚拟画布”上,最后在一次

4、性将整块画布画到真正的窗体上。因为所有的单个图形的绘制都不是真正的调用显示系统“画”,所以不会占用显示系统的开销,极大的提高的绘图效率。其原理如图1所示。[1][3]图1:双缓存绘制原理示意2、引进双缓存技术解决实际中的问题采用双缓冲技术,由于绘图操作大部份都在内存中完成,所以绘图速度没有太大的制约。在.NET中,由于GDI+的引入,实现双缓冲更加简单:首先建立缓冲区,从缓冲区取得Graphics对象,使用其进行绘图;然后将缓冲区内已绘制好的图像拷贝到目标设备上显示。[3]详细说明一下双缓存的具体实现步骤:1、在内存中建立一块“虚

5、拟画布”:Bitmapbmp=newBitmap(600,600);2、获取这块内存画布的Graphics引用:Graphicsg=Graphics.FromImage(bmp);3、在这块内存画布上绘图:4、将内存画布画到窗口中:5、最后双缓存的实现:3、结论以上方法可以用来去除GDI画图时的闪烁问题,双缓存技术的引用提高了图像程序显示的性能,当然在缓冲区还可以实现很多高级的图形操作,比如透明,合成等等,这取决于具体的算法。因此用好缓存不仅可以极大地提高程序的交互速度,而且会让应用软件有一个流畅的图形显示。当进行复杂的绘图操作时

6、,使用双缓冲技术,可以有效地防止画面的闪烁。参考文献:[1]姜晓峰,李云飞.计算机图形图像技术与应用教程.北京:北京希望电子出版社,2002.[2]MaheshChand.GDI+图形程序设计M.北京:电子工业工业出版社,2005.[3]韩丽娜,石昊苏.使用双缓存来解决GDI下的闪烁问题[J].计算机工程与设计,2006.

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。