如何在滚动时消除Windows.Forms自定义控件中的闪烁?

use*_*305 8 .net c# gdi+ winforms

我想在C#中创建一个自定义控件.但是每当我必须完全重绘我的控件时,它就会闪烁,即使我使用双缓冲(首先绘制到图像,然后进行blitting).

当我必须完全重绘时,如何消除闪烁?

Sha*_*tin 13

您可以尝试在InitiliseComponent调用之后将以下内容放入构造函数中.

SetStyle(ControlStyles.OptimizedDoubleBuffer | 
         ControlStyles.UserPaint |
         ControlStyles.AllPaintingInWmPaint, true);
Run Code Online (Sandbox Code Playgroud)

编辑:

如果你这样做,你可以删除你自己的双缓冲代码,然后让控件绘制自己以响应被调用的相应虚拟方法.


Bra*_*uce 8

我从一个有效的C#程序中提取了这个.其他海报有语法错误,并清楚地从C++而不是C#复制

SetStyle(ControlStyles.OptimizedDoubleBuffer | 
                        ControlStyles.UserPaint |
                        ControlStyles.AllPaintingInWmPaint, true);
Run Code Online (Sandbox Code Playgroud)