winform 添加背景圖 閃屏問題解決


winform中只要添加了背景圖片資源,窗體加載顯示的時候就會出現不停的閃屏操作,網上找了很多方法,效果都不明顯;

然后自己觀察和思路:看窗體的加載過程,當有背景圖的時候,首先出來的是背景圖,之后背景圖上層的控件比如Panel、Button等就會閃爍,如果刪除了背景圖,就頁面加載速度也快了,也咩有閃屏的現象了

自己的思路:等頁面完全加載完成時候,再設置背景圖,是否就不會出現嚴重閃屏,想到了一個方法入下:

1   private void Form_Shown(object sender, EventArgs e)
2         {
3             顯示背景圖控件.BackgroundImage = Image.FromFile("圖片資源地址");
4         }
View Code

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   (這個博主寫的比較詳細透徹,自己又悟到了)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM