首页 / 知识
关于c#:如何在窗体上双缓冲.NET控件?
2023-04-16 05:09:00

How to double buffer .NET controls on a form?
如何在出现闪烁的窗体上设置控件的受保护的 这是Dummy解决方案的通用版本。 我们可以使用反射来获取受保护的DoubleBuffered属性,然后可以将其设置为true。 注意:如果用户在终端服务会话(例如,远程桌面)中运行,则应向开发人员缴税,并且不使用双缓冲。如果此人在远程桌面中运行,则此帮助程序方法将不会启用双缓冲。
检查这个线程 重复该答案的核心,您可以在窗口上打开WS_EX_COMPOSITED样式标志,以使窗体及其所有控件都得到双缓冲。从XP开始,样式标记可用。它并不能使绘制速度更快,但是整个窗口是在屏幕外缓冲区中绘制的,并且一拳打在屏幕上。使它在用户的眼睛上立即可见,而没有可见的绘画瑕疵。它并非完全没有问题,某些视觉样式渲染器可能会在其上出现故障,尤其是TabControl的标签过多时。 YMMV。 将此代码粘贴到您的表单类中:
这种技术与Winform的双缓冲支持之间的最大区别是Winform的版本一次只能在一个控件上运行。您仍然会看到每个单独的控件绘画本身。看起来也像是闪烁效果,尤其是在未绘制的控件矩形与窗口背景形成鲜明对比的情况下。
Ian拥有有关在终端服务器上使用此功能的更多信息。
一种方法是扩展要加倍缓冲的特定控件,并在控件的ctor中设置DoubleBuffered属性。 例如:
扩展方法为控件打开或关闭双缓冲
用法(例如,如何使DataGridView DoubleBuffered):
nobugz在他的链接中获得了该方法的荣誉,我只是在重新发布。将此替代添加到表单中:
这对我来说效果最好,在Windows 7上,当我调整控件较重的窗体的尺寸时,会出现大的黑色块。现在,控件将反弹!但是更好。 这导致我在第三方控制下持续两天的悲伤,直到我找到它为止。
最近,在调整包含其他几个控件的控件的大小/重画时,我遇到了很多漏洞。 我尝试了WS_EX_COMPOSITED和WM_SETREDRAW,但是直到我使用了它,一切都没有起作用:
只是想传递下去。 在尝试双缓冲之前,请查看SuspendLayout()/ ResumeLayout()是否解决了您的问题。 vb.net这个很好的解决方案的版本。...:
您也可以将控件继承到自己的类中,并在其中设置属性。如果您倾向于在所有控件上进行很多相同的设置,则此方法也很好。 我发现只需在表单上设置DoubleBuffered设置即可自动设置此处列出的所有属性。 |
最新内容
相关内容
linux命令解决方案?
linux命令解决方案?,系统,管理,数据,电子,工作,电脑,软件,情况,不了,档案,linux处理/tmp文件空间不足1、删除缓存文件 缓存文件是临时存储在磁linux命令查看包属性?
linux命令查看包属性?,时间,系统,信息,状态,命令,文件,通讯录,管理,情况,标准,Linux文件相关命令命令一:cat cat命令应该是在Linux中查看文件内linux内核属性命令?
linux内核属性命令?,系统,地址,时间,信息,标准,管理,数据,工作,百分比,内核,一般优化linux的内核,需要优化什么参数1、说起优化,其实最好的优化pythonPandas Series对象有哪些属
pythonPandas Series对象有哪些属性?,工具,数据,数字,分析,培训,属性,数据类型,数组,对象,索引,想必大家都知道pandas,它是基于Numpy的一种工具如何在Python中定义类方法和修改类
如何在Python中定义类方法和修改类属性?,代码,方法,培训,对象,实例,定义,结果,示例,赋值,属性,Python中的类还可定义使用@classmethod修饰的类Python __dict__属性详解
Python __dict__属性详解,代码,公用,信息,数据,培训,管理,属性,对象,函数,结果,我们都知道Python一切皆对象,那么Python究竟是怎么管理对象的Python查看模块中的属性
Python查看模块中的属性,名称,标准,环境,培训,属性,模块,对象,函数,定义,变量,内置函数dir可用于列出某模块中定义了哪些属性(全局名称空间)Python之有妙用的__name__属性
Python之有妙用的__name__属性,代码,入口,培训,文件,模块,程序,属性,妙用,时候,表示,前面说了,py文件分两种:用于执行的程序文件和用于导入的模Python 类的私有属性和方法
Python 类的私有属性和方法,私有化,培训,开头,变量,函数,模块,属性,目的,方法,更多,在Python中,通过单下划线”_”来实现模块级别的私有化,一般Python 类和实例的属性
Python 类和实例的属性,属性,实例,名称,培训,名字,对象,字符串,方法,列表,变量,类属性.类属性是可以直接通过“类名.属性名”来访问和修改。.python如何看变量属性
python如何看变量属性,培训,属性,函数,变量,参数,对象,方法,列表,范围内,字典,1、使用dir()函数查看dir()函数不带参数时,返回当前范围内的变python如何打印一个对象的全部属性
python如何打印一个对象的全部属性,代码,公用,情况,培训,属性,对象,字典,全部,方法,动态,python打印对象的全部属性,可以使用__dict__方法。遇