无效方法有什么作用?

invalidate方法在winform应用程序中做了什么?

Invalidate() 方法System.Windows.Forms 命名空间的 control class中带有六个重载forms。

谢谢…..

Windows窗体使用GDI进行渲染。 GDI是Windows中的原始图形界面。 DirectX是最初为游戏开发而创建的新界面,但现在也被WPF等更高级别的框架使用。

GDI基于绘制方法的概念。 显示窗口时,Windows将向负责窗口的代码发送绘制消息。 这将导致调用paint方法。 然后,绘制方法应该将窗口的内容绘制到屏幕上。

当GDI程序想要更新显示的内容时, 它不能直接将更新的图像绘制到屏幕上 。 相反,它必须告诉Windows一个区域需要更新。 这称为使区域无效 。 然后,Windows将调用相关的绘制方法,提供有关无效内容和需要更新的信息。 然后,绘制方法应将更新的内容绘制到屏幕上。

当窗口被拖过其他窗口时,也使用这种更新屏幕内容的方法。 当开发GDI时,图形硬件非常慢,并且在Windows内部进行了大量工作以缓存位图,并且只能使更改的内容无效和更新。

当绘制重叠的窗口或子窗口时,它会返回到前面以获得正确的视觉元素分层。 这可能导致闪烁的背景被擦除和绘制,然后是前面的其他元素。 如果重绘速度比屏幕刷新慢,您可能会注意到一些闪烁。 这是使用Windows窗体创建的GDI应用程序的标志。

在Windows窗体中,当您使控件无效时,您请求重绘它。

要求窗口重绘无效窗口的客户区域。

来自MSDN:

“使控件的整个表面无效并导致重绘控件。”

http://msdn.microsoft.com/en-us/library/598t492a.aspx

它会导致控件重新绘制。 http://msdn.microsoft.com/en-us/library/system.windows.forms.control.invalidate.aspx

除非您正在进行一些低级图形操作,否则很少需要调用此方法。

Invalidate()方法将重绘控件。 例如,如果使用包含标签和文本框的面板“panel1”,则以下代码将重绘标签和文本框(通过调用Paint事件)

 panel1.Invalidate(); 

它是一种GUI渲染方法 – 它强制窗口重绘控件的可见部分。

它基本上调用控件的PaintBackground和Paint方法。