需要画两个动态gif,它们有部分重叠,我现在画这两个动态gif是通过两个timer来实现的,每个timer定时在界面上画一帧图片。但是如果两个图片有部分重叠,那么重叠的部分就会不停的闪,因为这两个timer会轮流的把两个图片画在重叠的部分。我想做到的效果是,后画的把先画的覆盖掉,当然只覆盖重叠的部分,请问应该怎么做?谢谢!

解决方案 »

  1.   

    在一个timer里画应该就解决你的问题了。
      

  2.   

    你在Timer里画图?
    吧画图的操作都整理到OnPaint里
    然后在Timer里修改参数
    Invalidate画图
      

  3.   

    但是两个timer分别invalidate的时候都会把重叠部分invalidate,那部分也会被轮流画出来啊?难道invalidate一个不规则的形状(把重叠的部分除去)?
      

  4.   

    可以采用缓存DC,将两个图按照指定的顺序写在缓存DC上,然后再刷新时将缓存的DC写在屏幕上,这样就消除了交叠闪烁的问题。
      

  5.   

    你试一下就知道了
    只要你在OnPaint中设置好绘图顺序
    就不会出现重叠闪烁的
      

  6.   


    我明白你的意思了,invalidate其中一张图片的RECT时候,由于另一张图片和它有重叠,所以重叠部分也会被重画,只要重画的顺序不变,就不会出现这个情况了,谢谢啦!