给mdi主窗口画背景图,我采用直接在Form.Canvas上画图的方式
画图的代码放在 Form.OnPaint 事件中。可是当我 Resize 该窗口的时候,背景图并不会随之重画,这就使得Resize后的背景图极其难看。怎么才能让 Form 在Resize的时候重画呢?
我使用 invalide、refresh、repaint 等方法都不行我该怎么办呢?

解决方案 »

  1.   

    Form的Resize事件大概没有发生,因为如果发生,必然能刷新,是不是mdi的Resize事件没有触发,触发的是主窗体的Resize事件
      

  2.   

    我试验了,的确mdichild的onresize的时候不会触发onPaint,因此你只好在onresize的事件中写下面的代码了:
    postmessage(self.handle,wmPaint,0,0)
    其实你直接调用form的Paint就可以了:
    FormPaint(Sender)就可以了。
      

  3.   

    我在 OnResize 事件里写上了如上代码也不行实际上应该是重画了的,因为我将窗体最小化然后在恢复就可以了
    显然只是在resize的时候没有刷新而已
      

  4.   

    重载一下paint
    应该没问题 的
      

  5.   

    刚刚做了一个测试,哈哈!你在form上放一个image,在它的canvas上画画,这样技能获得教快的速度,又能保存刚刚画的东西,就不需要repaint,paint等方法了,但是还是不知道为什么form的canvas画的东西不能更新到系统呢?