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