.net – 闪烁和“CreateParams”

我想避免在我的应用程序面板中闪烁,经过4个月前的谷歌搜索后,在尝试了子类化的面板后,在问了两三次之后,在其他论坛中询问后……没有人有解决方案,但今天我发现了在最后一个答案中奇迹的解决方案: Is their a way to stop the picturebox from flickering when being resized?

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事件.您仍然需要在背景对象上使用双缓冲区.

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...