现在在做一个矢量绘图软件,由于涉及大量的图形编辑操作,所以编辑速度成了现在最为头痛的问题。
以对一个图形进行平移操作为例,需要刷新两个区域,1个是图形原来位置的区域,1个是图形移动后的区域,算法如下:
//使用双DC提高绘制效率和防止闪烁
CRect rc ;
计算图形原来位置的区域rc;
在内存DC中重画页面的rc区域;
计算图形移动后的区域rc;
在内存DC中重画页面的rc区域;
将内存DC更新到屏幕DC;
但是发现这样的刷新效率很低,特别是页面上有大量图形的时候,重画页面某个区域可能会导致大量的图形重画。但是不重画又没有更好的刷新办法。后来稍稍修改了上面的算法,把两个区域先合并后再进行一次重画,但效率并没有显示的提高。不知道有没有更好的刷新方式?