winform中只要添加了背景圖片資源,窗體加載顯示的時候就會出現不停的閃屏操作,網上找了很多方法,效果都不明顯;
然后自己觀察和思路:看窗體的加載過程,當有背景圖的時候,首先出來的是背景圖,之后背景圖上層的控件比如Panel、Button等就會閃爍,如果刪除了背景圖,就頁面加載速度也快了,也咩有閃屏的現象了
自己的思路:等頁面完全加載完成時候,再設置背景圖,是否就不會出現嚴重閃屏,想到了一個方法入下:

1 private void Form_Shown(object sender, EventArgs e) 2 { 3 顯示背景圖控件.BackgroundImage = Image.FromFile("圖片資源地址"); 4 }
Shown方法是所有控件加載完成后執行,只會觸發一次
看了下效果,閃屏沒有之前的嚴重了,但是還是會出現閃屏
最后還試了很多種方法,都么得解決根本閃屏操作
只有下面這段代碼是真的神奇,加上就一下也不閃啦
1 protected override CreateParams CreateParams 2 { 3 get 4 { 5 6 CreateParams cp = base.CreateParams; 7 8 cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED 9 10 if (this.IsXpOr2003 == true) 11 { 12 cp.ExStyle |= 0x00080000; // Turn on WS_EX_LAYERED 13 this.Opacity = 1; 14 } 15 16 return cp; 17 18 } 19 20 } //防止閃爍 21 22 private Boolean IsXpOr2003 23 { 24 get 25 { 26 OperatingSystem os = Environment.OSVersion; 27 Version vs = os.Version; 28 29 if (os.Platform == PlatformID.Win32NT) 30 if ((vs.Major == 5) && (vs.Minor != 0)) 31 return true; 32 else 33 return false; 34 else 35 return false; 36 } 37 }
將這段代碼復制粘貼到閃屏的窗體類中,就不會閃屏了
參考地址:
https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.control.createparams?view=net-5.0 (微軟官方)
http://blog.sina.com.cn/s/blog_1590305720102x8jv.html (這個博主寫的比較詳細透徹,自己又悟到了)