網頁

C# 破圖問題 (flicker) 之解決辦法

最近寫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;

希望能幫助到大家!

沒有留言:

張貼留言

Related Posts Plugin for WordPress, Blogger...