程序地带

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   (这个博主写的比较详细透彻,自己又悟到了)


 


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/19930521zhang/archive/2021/01/13/14271129.html

随机推荐

c++多数据平均数_EXCEL 加权平均数的计算

工作中经常会遇到下面这种情况,需要计算加权平均数。已知图中的两种水果,现在需要计算葡萄和西瓜分别的加权平均的单价。普通的计算方法大家肯定知道,以葡萄为例&#x...

weixin_39560924 阅读(523)

fft函数matlab_信号处理-1:FFT和PSD

信号处理中常用的快速傅立叶变换(FastFourierTransform,FFT)和PSD(PowerSpectralDensity,PSD)代码(MATLAB)。1.FFT函数function[f,...

小小哈密瓜 阅读(972)

设计模式笔记---工厂方法模式

1、概念定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。 2、说明抽象产品类publicabstractclassProduct{public...

形成南北 阅读(980)

Mock.js的学习分享

Mock.js写练手项目的时候常常会遇到一个问题,没有后台接口,获取数据总是很麻烦,我结合mock的学习视频和官方文档,来记录mock的学习历程,1.Mock是啥Mock....

ych6666 阅读(299)