Refresh,Update和Repaint有什么区别?

Iva*_*nov 42 delphi vcl

我不知道这三种方法中哪一种最适合我.他们都为我工作.有谁知道刷新,更新和重绘之间的区别?

stu*_*lly 41

根据在线文档.

刷新 - 重新绘制屏幕上的控件.

调用Refresh方法立即重新绘制控件.Refresh调用Repaint方法.可以互换地使用Refresh和Repaint方法.

重绘 -强制重绘屏幕上其图像的控制.

调用重绘以强制控件立即重新绘制其图像.如果ControlStyle属性包含csOpaque,则控件直接绘制自身.否则,Repaint方法将调用Invalidate方法,然后调用Update方法,以便控件下方的任何可见控件部分也将重新绘制.

更新 - 立即处理任何待处理的绘制消息.

调用更新以强制重新控制控件,然后再进行任何可能耗时的处理.使用"更新"为不​​能等待Windows绘制消息到达的用户提供即时反馈.

更新不会使控件无效,只是强制重新绘制已经失效的任何区域.调用重绘也可以使控件无效.


Lar*_*ens 34

您的问题已经得到解答,但如果您需要良好的性能和较少的闪烁,则应调用Invalidate.它允许Windows优化绘画过程.

无效 - 完全重绘控件.

需要重新绘制整个控件时使用Invalidate.当控件中的多个区域需要重新绘制时,Invalidate将导致整个窗口在一次通过中重新绘制,从而避免由冗余重绘引起的闪烁.在实际重新绘制控件之前多次调用Invalidate没有性能损失.