2010-05-08 75 views
3

我正在繪製面板中的對象的網格工作。當我快速滾動面板時,我得到一個閃爍。我認爲啓用雙緩衝可能會照顧到這一點,但我發現它並沒有完全繪製所有內容,而我留下了空白部分。 任何人都可以給我任何可能發生的事情以及我如何糾正它的建議。doublebuffering不減少閃爍

UPDATE:

我發現,我創建了圖形與對象的createGraphics(),而不是在paint方法

回答

1

你是如何設置的雙緩衝使用參數?

您應該控制的DoubleBuffered屬性設置爲true

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

或者

使用的SetStyle,並設置兩個OptimizedBoubleBuffer和AllPaintingInWmPaint

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

ControlStyles.AllPaintingInWmPaint命令調控忽略WM_ERASEBKGND消息。這將減少你看到的閃爍,特別是從滾動。當將DoubleBuffered屬性設置爲true時,這是隱含的,事實上,它與第二個示例中對SetStyle的調用一樣。