最近寫C#視窗應用程式時遇到了破圖的問題,也就是所謂的Flicker,原因在於我專案中的自訂控制項,是由多個自訂控制項所組成的,造成Visual Studio來不及繪製好控制項,就將圖像提前呈現出來。
我的範例中的破圖情況,實際上只有一個控制項,卻有還沒放大前的殘像 |
試過了調整visible、拖慢顯示時間等等方法都沒用,最後終於找到解決方法了!詳細程式碼如下:
方法一、
在表單中複寫CreateParams方法:
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
// Turn on WS_EX_COMPOSITED
cp.ExStyle |= 0x02000000;
return cp;
}
}
方法二、
緩衝區延長
this.DoubleBuffered = true;
this.WindowState = FormWindowState.Maximized;
希望能幫助到大家!
沒有留言:
張貼留言