How to eliminate flicker in Windows.Forms custom control when scrolling?我想在C#中创建一个自定义控件。 但是,每次我必须完全重绘控件时,即使使用双重缓冲(首先绘制到Image并使其模糊化),它也会闪烁。 我必须完全重画时如何消除闪烁? 您可以尝试在InitiliseComponent调用之后将以下内容放入构造函数中。
编辑: 如果可以的话,请删除自己的双缓冲代码,并使控件自己绘制以响应调用适当的虚拟方法。 我从一个有效的C#程序中提取了此代码。其他张贴者存在语法错误,并且清楚地从C ++而不是C#复制
只需打电话就可以了
您最可能看到的闪烁是因为Windows首先(通过WM_ERASEBKGND)绘制控件的背景,然后要求您控件进行任何需要做的绘制(通过WM_PAINT)。通过禁用背景绘画并在OnPaint覆盖中进行所有绘画,可以在99%的情况下消除此问题,而无需使用双缓冲所需的所有内存。 您说您曾经尝试过双重缓冲,但随后您说要先绘制到Image并将其涂抹。您是否尝试过在构造函数中设置DoubleBuffered = true而不是自己使用Image进行设置? |