GDI+因为其较好的代码封装使得程序员代码的编写更高效,但随之而来的是对其绘图效率低下的诟病,究竟它的绘图效率是不是低下我不好说(个人觉得就算低下其程度也十分有限,据说Visio就是用GDI+写的),但下面一些编程中的trick相信能较大程度上提高GDI+的绘图效率
1,Graphics.SetSmoothingMode(SmoothingModeHighSpeed); //高速、低画质
2,pDC->GetClipBox(&rcBox );
即只重画无效区,Graphics里有类似的函数
3,基本的方法是用双缓冲,首先算法要优化,然后对于没有落在屏幕区域的就不去画,还有能局部刷新的就不要全屏刷新,这些对于一般的东西都可以搞定,GDI每一个细节都有可能导致效率低下,要注意细节 比较高级的方法好像是用一个线程在后台绘图,绘在一个比较大的视频缓冲表面,第一次要比较长的时间,然后用ScrollDC就可以浏览了,这样不用经过system bus,所以比较快
4, CbufferBitmap
其实我觉得方法3双缓冲对优化绘图是最有效、最直观,一般情况下用双缓冲足矣,其它的一些优化方法可以在方法3的基础上进一步实施如果你对双缓冲的效果还不满意的话
恩,附上一篇优化的试验
本文介绍了一些提升GDI+绘图效率的方法,包括使用高速平滑模式、仅重绘无效区域、采用双缓冲技术和后台线程绘图等技巧。通过这些方法可以显著改善绘图性能。
6017

被折叠的 条评论
为什么被折叠?



