我不知道哪种方法最适合我。它们都可以对我起作用。有人知道“Refresh”、“Update”和“Repaint”之间的区别吗?
我不知道哪种方法最适合我。它们都可以对我起作用。有人知道“Refresh”、“Update”和“Repaint”之间的区别吗?
根据在线文档:
Refresh - 在屏幕上重新绘制控件。
调用Refresh方法可以立即重绘控件。Refresh会调用Repaint方法,两者可以互换使用。
Repaint - 强制控件在屏幕上重新绘制。
调用Repaint方法可以强制控件马上重新绘制。如果ControlStyle属性包含csOpaque,则控件会直接绘制自己。否则,Repaint方法会先调用Invalidate方法,然后再调用Update方法,以便将控件下面任何可见部分的控件也一并重新绘制。
Update - 立即处理任何待处理的绘图消息。
调用Update方法可以在进行任何可能耗时的处理之前强制控件重新绘制。使用Update可以为用户提供即时反馈,而无需等待Windows绘图消息到达。
Update不会使控件失效,而只是强制重绘任何已经失效的区域。如果要使控件失效,则应该调用Repaint。
您的问题已经得到解答,但如果您需要更好的性能和更少的闪烁,应该调用Invalidate而不是其他方法。这将允许Windows优化绘画过程。
Invalidate - 完全重绘控件。
当整个控件需要重新绘制时,请使用Invalidate。当控件内部的多个区域需要重新绘制时,Invalidate会在单个传递中导致整个窗口被重新绘制,从而避免由冗余重绘引起的闪烁。在控件实际重新绘制之前多次调用Invalidate不会产生性能损失。