最小化形式后,Winforms Double Buffering关闭

时间:2015-06-29 01:02:29

标签: c# winforms flicker doublebuffered

我有一个显示多个图形的表单,为了在渲染图形时改善视觉体验,我使用了this piece of code来启用双缓冲。

当我在不最小化/最大化表单的情况下执行应用程序时,Double Buffering工作得非常好,但是如果我碰巧最小化表单并再次最大化它,那么现在Double Buffering不再工作并且图形被重新绘制有明显的闪烁。

每次表单最小化/最大化时,有没有办法打开双缓冲?

1 个答案:

答案 0 :(得分:1)

试试这段代码

bool hasMinimized;
void SizeChangedCallback(object sender, EventArgs e) {
    if ( WindowState == FormWindowState.Minimized ) {
        hasMinimized = true;
    } else {
        if ( hasMinimized ) {
            hasMinimized = false;
            /* Call SetStyle() in here */
        }
    }
}

您必须将表单的SizeChanged事件与SizeChangedCallback相关联 像这样:

this.SizeChanged += SizeChangedCallback;