我想避免在我的应用程序面板中闪烁,经过4个月前的谷歌搜索后,在尝试了子类化的面板后,在问了两三次之后,在其他论坛中询问后……没有人有解决方案,但今天我发现了在最后一个答案
Protected Overrides ReadOnly Property CreateParams() As CreateParams Get Dim cp As CreateParams = MyBase.CreateParams cp.ExStyle = cp.ExStyle Or &H2000000 Return cp End Get End Property 'CreateParams
现在我想知道那些代码行是什么.我需要了解我的应用程序正在做什么代码,
是避免闪烁的好方法吗?
MSDN说:
“不应重写CreateParams属性并用于调整派生控件的属性”
但为什么不呢?,这是我发现真正让我的面板闪烁的唯一方法,所以这就是为什么我想知道更多关于我上面发布的代码的原因,我想了解所有的订单,也是该子订单的好处和否定,欢迎所有事情……
有人可以向我解释一下这段代码吗?
UPDATE:
我已经在我的所有应用程序中测试了“闪烁解决方案”,是的,它是一个闪烁的解决方案…但是有负面因素’因为我的程序转速-200%速度更慢,我的意思是当使用那个覆盖子程序转非常慢,比如x6倍慢,因此使用覆盖子不是一个好主意.
有人知道我是否可以避免闪烁而不会使我的应用程序变得愚蠢?
每次重绘一个控件时,你还需要重绘背景;您的应用程序可能未声明要完成的资源的操作.您正在使用的解决方案基本上设置一个标志,以指示您希望您的表单及其绘制的所有内容都是双缓冲的.您可以使用此消耗不必要的资源.相反,您可以在图像重新调整大小的每个对象上将double buffered属性设置为true.
计算机资源有限,您应尽可能多地保留.这就是为什么Microsoft预定了这么多参数和资源释放程序的原因.
编辑:默认情况下,PictureBox是双缓冲来处理onpaint事件.您仍然需要在背景对象上使用双缓冲区.