我用delphi做了一个类似于windows绘图板的东西,但是当我用鼠标拖动它的窗口左右晃动,并使其超出屏幕再回到原位的时候,他的一部分就显示不出来了,其中我没有写重绘代码。
  在网上查到可移动过windows的wm_paint     以及 Invalidate函数来实现重画,但具体该怎么写?我改把Invalidate放到哪里呢?我并不知道什么时候发生那个拖动窗体的行为???
   
  请帮帮忙!!!谢谢~~~

解决方案 »

  1.   

    OnMouseMove事件里面 PaintBox.Invalidate,然后在PaintBox的OnPait事件里写绘制的代码
      

  2.   

    将PaintBox.Parent.DoubleBuffered设为True可以减少画图时的闪烁。
      

  3.   

    总结
    1.设置 画图对象.DoubleBuffered := True;开双缓冲,减少闪烁
    2.画的过程写在OnPaint事件中,MouseMove调用Invalidate
      

  4.   

    问题是你没有说你用什么控件的Canvas,一般都会有OnPaint事件的
      

  5.   

    MouseMove进行重绘的话资源占用还是一个问题