DELPHI的窗体刷新问题(200分)

  • 主题发起人 主题发起人 tmnet
  • 开始时间 开始时间
T

tmnet

Unregistered / Unconfirmed
GUEST, unregistred user!
在编程中,我发现DELPHI的窗体刷新有问题,不象VC++那样简单。好象DELPHI自己接管了<br>PAINT事件。比如如下这段代码就可能出问题。<br>在form1.create中:<br>&nbsp; bmp:=tbitmap.create;<br>&nbsp; bmp.loadfromfile('d:/b.bmp');<br>在form1.paint事件中:<br>&nbsp; &nbsp;bitblt(form1.canvas.handle,form1.width-100,form1.height-100,bmp.width,bmp.height,bmp.canvas.handle,0,0,srccopy);<br>当然以上语句可能出错,但是做为实验语句是可行的。并且根据我的预想,BMP图片应该随<br>&nbsp; 窗体大小的调整改变位置,<br>但实际并非如此,窗体上的图象一动不动。看来PAINT事件的确有问题,如果把BITBLT语句放到<br>CREATE中去,图象却可以正常显示,真是怪事。<br>&nbsp; 不知哪位高手能回答我的问题。我在此感谢了。当然还有高额回报200分。
 
把OnResize事件指到OnPaint事件上。
 
你是不是应该在Form1.create中加入<br>form1.repaint<br>如果窗体没有重画,好象onpaint不能执行吧?
 
Form的Paint事件并不等同Win API的Paint事件。<br>得在Form的Resize事件中重画: &nbsp;InvalidateRaect(Handle.nil,True);
 
自己写Paint过程啊<br><br>Tform1=Class(TForm)<br>private<br><br>protected<br><br>public<br>&nbsp; procedure Paint;override;<br>published<br><br>end;<br><br>当Form1需要重绘的时候,都会执行Paint过程
 
多人接受答案了。
 
后退
顶部