一个Panel,叫它Parent,在Onpaint事件,里面画了一张图片和小点点,Panel里面还有一个Panel叫做Child,背景色设为透明,程序运行时Child可以用鼠标拖动,但是闪烁很严重。double buffering开了也不好用。我觉得是每次都重新刷新整个Parent很费时间,可是局部刷新 Invalidate 怎么用啊,或者说到底是不是局部刷新呢?

解决方案 »

  1.   

    局部刷新可以给INVALIDATE一个REGION ,会好点。
    也可以使用GDI的XOR方式。
    还可以CLIENT和背景抓两幅图,然后,拖动的时候化图,这样是最好的方式,就是稍微麻烦一点.
      

  2.   

    这是绘制的问题。
    如果要解决需要使用背表面,意思就是在内存中申请一个表明(相当于一张图片),把你要画的东西都在这张图片上画好,当全部画好后一次性贴到你的Panel中,然后清空该表面重新画,画完再贴,这样就不会闪烁了。
      

  3.   

    一个Panel,叫它Parent,在Onpaint事件,里面画了一张图片和小点点,Panel里面还有一个Panel叫做Child,背景色设为透明,程序运行时Child可以用鼠标拖动,但是闪烁很严重。double buffering开了也不好用。我觉得是每次都重新刷新整个Parent很费时间,可是局部刷新 Invalidate 怎么用啊,或者说到底是不是局部刷新呢?
    ----------------------------------
    你刷新的是哪个panel啊, 贴代码出来,你肯定有地方弄得不错,偶也做过类似的东西, 不闪啊