打印

熟悉gtk画动画的朋友请进,讨论一下连连看的连线效果撒

长时间的绘图用线程来做,就像CAD,在移动10000个元素时,它边移边画,不一定能画完,因为鼠标会继续移动,每次新的移动都会删除老的再重新画新的,看起来效果不错。

你的问题也类似,其实很简单,

线程这么来:

while(1)
{
    draw(1);
    if(stop) clean();
    draw(2);
    if(stop) clean();
    ....
    draw(n);
}

每个draw都要把draw的内容记录在自己的memdc中,同时刷到屏幕。下一个draw要用保存的上一次绘图操作把屏幕刷到原始态,再刷这次的内容上去。

如果要中途停止操作,要把最后的一次写屏取消来恢复原屏幕,也就是说,如果下一个连接发生在上一个连接的动画完成之前,上一个动画要中途取消,恢复原始屏幕,然后再画当前这个连接的动画。

TOP