代码之家  ›  专栏  ›  技术社区  ›  fishhead

不减少闪烁的双缓冲

  •  3
  • fishhead  · 技术社区  · 16 年前

    有谁能给我一些建议,告诉我会发生什么事,以及我该如何改正。

    更新:

    1 回复  |  直到 16 年前
        1
  •  1
  •   Chris Taylor    16 年前

    你是怎么设置双缓冲的?

    您应该将控件的DoubleBuffered属性设置为true

    public UserControl1()
    {
      InitializeComponent();
      this.DoubleBuffered = true;
    }
    

    或者

    public UserControl1()
    {
      InitializeComponent();
      SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true);      
    }
    

    ControlStyles.AllPaintingWMPAINT指示控件忽略WM\ U ERASEBKGND消息。这将减少你看到的闪烁,特别是从滚动。当将DoubleBuffered属性设置为true时,这意味着,实际上它对SetStyle的调用与第二个示例中的调用相同。