刷新,更新和重画有什么区别?

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

根据在线文件。

刷新 – 重新绘制屏幕上的控件。

调用Refresh方法立即重新绘制控件。 刷新调用重绘方法。 使用刷新和重新绘制方法交替使用。

重画 – 强制控件在屏幕上重新绘制其图像。

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

更新 – 立即处理任何待处理的绘制消息。

调用更新以强制重新绘制控件,然后再进行可能耗时的处理。 使用更新来向用户提供即时反馈,使用户无法等待Windows画图消息到达。

更新不会使控件失效,只是强制重绘任何已经失效的区域。 调用repaint而不是使控件失效。

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

无效 – 完全重新绘制控制。

整个控件需要重新绘制时使用无效。 当控件中的多个区域需要重新绘制时,Invalidate将导致整个窗口一次重新绘制,避免冗余重绘导致的闪烁。 在控件实际重新绘制之前,多次调用Invalidate不会有性能损失。

每个较老的(CBuilder 6)VCL参考:

Invalidate “Invalidate通知控件整个表面需要重新绘制,调用Invalidate可以防止由于一系列部分重绘造成的闪烁,在控件实际重新绘制前多次调用Invalidate没有性能损失。

直到更新控件才会发生实际重绘。 要强制立即重绘,请调用Repaint。

重画 “TWinControl :: Repaint调用Invalidate方法,然后更新方法重新绘制控件”(轻微的释义)。

(不幸的是,旧的参考比我更新的参考更好,更完整(CBuilder 2007)。