c# - invalidate 方法有什么作用?

标签 c# .net winforms

invalidate 方法在 winform 应用程序中有什么作用?

Invalidate() 方法System.Windows 的控制类中带有六个重载形式.Forms 命名空间.

谢谢.....

最佳答案

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

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

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

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

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

在 Windows 窗体中,当您使一个控件无效时,您请求它应该被重绘

关于c# - invalidate 方法有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6425161/

相关文章:

c# - Action 作为函数中的可选参数

c# - 如何在vs2012中添加对程序集的引用

c# - .NET 3.5 中的 HashSet<T> 有什么特别之处?

.net - 公共(public)开源项目使用什么签名方式?

vb.net - 增加行大小取决于 DataGridView 中的图像

c# - MSB0001 : Internal MSBuild Error: refCount should not be less than 1

c# - Winform 窗体文本中的版本号

c# - 对于 BDD/TDD 这种风格的改进有什么建议吗?

c# - 将两个不同属性绑定(bind)在一起的简单方法?

winforms - 切换 DataGridView 行选择,其中 SelectionMode 为 FullRowSelect