#Invalidate, Update, Repaint, Refresh的异同
文章目录
Invalidate
Invalidate方法通知Windows窗体的整个表面都应该重新绘制。最重要的是,Invalidate不会立即强制执行绘制操作。Windows只存储请求,只响应请求。
当前程序完全执行后,以及系统中没有其他未决事件后。Windows故意延迟绘制操作,因为这是最耗时的操作之一。有时因为这种延迟,只有在多次更改后才能绘制表单,从而避免多次连续调用(慢速)绘制方法。
Update
Update方法要求Windows更新表单的内容,立即重新绘制表单。
但是,请记住,只有在存在无效区域时,才会执行此操作;如果没有无效区域,则调用Update完全无效。
如果刚刚调用了Invalidate方法,或者是用户操作Update,就会发生这种情况。
因此,在调用Invalidate之后,通常会调用Update——也就是Repaint方法。
Repaint
Repaint方法就是依次调用Invalidate和Update。因此,它会立即激活OnPaint事件。
当需要向表单请求重新绘制操作时,通常应该按照标准的Windows方法调用Invalidate。当您需要频繁请求此操作时,这一点尤为重要。因为:
1、Windows中的wm_Paint消息是一种低优先级消息。更准确地说,如果重新绘制的请求处于挂起状态,但其他消