DoubleBuffer 会自动完成? 以前是要自己写的

解决方案 »

  1.   

    楼上的,DoubleBuffer怎么自己完成?
    TPaintBox没有doubleBuffer,我是把他的Parent的DoubleBuffer设置为True.
      

  2.   

    to (你的笑对我很重要) ( ) 
    我每次都是在内存中画好以后在Bitblt到控件的canvas里。
    我说的很清楚了。DoubleBuffered已设置为True,
    WM_ERASEBKGND消息也处理为result=1;
    绘图的时候是在内存里画好以后再贴上去的。
      

  3.   

    to Wangbab,答案说出来其实不稀奇,我来告诉你为什么-----你如果知道了要气个半死,嘿嘿。答案在这里:
    在你的procedure TWYWavePaintBox.PaintWithBitmap这个过程中,其中将位图2拷贝到MASK位图时,你错误地写了代码,你原来的代码是:
        BitBlt(self.m_WYMaskBitmap.Handle,2*self.m_nXFont,self.m_nYFont,
          self.m_nBitmapWidth,self.m_nBitmapHeight,
          self.m_WYBitmap2.Canvas.Handle,0,0,SRCPAINT);
    应该是:
        BitBlt(self.m_WYMaskBitmap.Canvas.Handle,2*self.m_nXFont,self.m_nYFont,
          self.m_nBitmapWidth,self.m_nBitmapHeight,
          self.m_WYBitmap2.Canvas.Handle,0,0,SRCPAINT);
    哈哈哈哈,就这么简单,怎么样?气了个半死吗?:P
    请客吃饭。
      

  4.   

    写NoSound,我也太粗心了。昨天找了一整天多没找到错误。谢谢了。结贴。
    再次感谢NoSound的帮助