请教一个菜鸟问题
在MFC绘图的时候
当图形变化比较频繁的时候
比如500ms一次的时候
就像俄罗斯方块或者贪吃蛇那样变化图像
刷新会使窗口闪动
请问大家怎么处理的
此致
    敬礼

解决方案 »

  1.   

    你是说俄罗斯方块?俄罗斯方块的背景是不动的,动的也就是那个很小的方块。只需要重绘移动的方块的那一点就可以了。
    另外,所有绘图都要在内存DC中绘画完成,然后再一次性贴到程序DC中。
      

  2.   

    有以下方法可以采用:
    1、脱屏渲染(内存兼容DC);
    2、避免频繁的大面积刷屏,即:少用Invalidate,改用InvalidateRect;
    3、如果一次绘图中要使用多种色彩的pen和brush,用不着创建多种色彩的pen和brush,改用GetStockObject获得DC_PEN和DC_BRUSH,之后用SetDCPenColor和SetDCBrushColor改变颜色即可;
    4、最有效的方法是:使用专用DC(如AutoCAD等,即使频繁刷屏也不会闪烁。),在注册窗口类的时候指定类的style:CS_OWNDC,这样,程序只需要在初始化时调用一次GetDC,并保留后面使用即可,因为GetDC和ReleaseDC很耗时的;
    5、优化算法,减少计算时间;
    6、综合以上5点一起使用,闪烁问题可以很好控制。
      

  3.   

    http://blog.chinaunix.net/u2/68418/showart_679467.html 
    http://www.techrss.cn/html/2008/09-27/115936.htm
    其实,双缓冲,看一下就知道了,主要是贴图!