最近学习写一个程序,其中一个基本的操作就是图像的水平移动,我采用了双缓冲和ScrollDC来解决这个问题.
在内存DC上先用ScrollDC把图像移动后在拷贝到屏幕上,对于ScrollDC这个函数,我理解并不深,所以现在的问题是,移动图像后,原先图像的位置还有图像,我不知道这个问题是因为ScrollDC使用的问题,还是那个区域还需要更新重画?如果解决这个问题?如果是需要更新重画,就要计算需要更新的区域,再用更新矩形区域的函数InvalidateRect来重画,这里还有一个问题,这个过程是怎样的,是否是调用Ondraw函数绘图,最后把需要更新的区域拷贝到屏幕上?如果是这样,那么如果绘图很费时间,那么不是无论更新小的区域还是更新大的区域,至少Ondraw都要画一遍吧,唯一的区别就是拷贝到屏幕的大小,这么一来更新的效率不是太低了?综上所述,两个问题
第一:ScrollDC移动矩形过程中,如何更新原先位置的图像。
第二:InvalidateRect()函数是怎样的工作过程?因为MFC里面的绘图操作大都在Ondraw中完成,Ondraw里面可能会有复杂的绘图操作,当图像变化时,更新某个区域的操作究竟是怎样完成的?如果按照我上面的理解,那效率岂不是太低了。请大家指点!