winform中只要添加了背景图片资源,窗体加载显示的时候就会出现不停的闪屏操做,网上找了不少方法,效果都不明显;html
而后本身观察和思路:看窗体的加载过程,当有背景图的时候,首先出来的是背景图,以后背景图上层的控件好比Panel、Button等就会闪烁,若是删除了背景图,就页面加载速度也快了,也咩有闪屏的现象了windows
本身的思路:等页面彻底加载完成时候,再设置背景图,是否就不会出现严重闪屏,想到了一个方法入下:api
1 private void Form_Shown(object sender, EventArgs e) 2 { 3 显示背景图控件.BackgroundImage = Image.FromFile("图片资源地址"); 4 }
Shown方法是全部控件加载完成后执行,只会触发一次ide
看了下效果,闪屏没有以前的严重了,可是仍是会出现闪屏this
最后还试了不少种方法,都么得解决根本闪屏操做spa
只有下面这段代码是真的神奇,加上就一下也不闪啦 code
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 }
将这段代码复制粘贴到闪屏的窗体类中,就不会闪屏了orm
参考地址:htm
https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.control.createparams?view=net-5.0 (微软官方)blog
http://blog.sina.com.cn/s/blog_1590305720102x8jv.html (这个博主写的比较详细透彻,本身又悟到了)