3
我正在繪製面板中的對象的網格工作。當我快速滾動面板時,我得到一個閃爍。我認爲啓用雙緩衝可能會照顧到這一點,但我發現它並沒有完全繪製所有內容,而我留下了空白部分。 任何人都可以給我任何可能發生的事情以及我如何糾正它的建議。doublebuffering不減少閃爍
UPDATE:
我發現,我創建了圖形與對象的createGraphics(),而不是在paint方法
我正在繪製面板中的對象的網格工作。當我快速滾動面板時,我得到一個閃爍。我認爲啓用雙緩衝可能會照顧到這一點,但我發現它並沒有完全繪製所有內容,而我留下了空白部分。 任何人都可以給我任何可能發生的事情以及我如何糾正它的建議。doublebuffering不減少閃爍
UPDATE:
我發現,我創建了圖形與對象的createGraphics(),而不是在paint方法
你是如何設置的雙緩衝使用參數?
您應該控制的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的調用一樣。