这里所说的解决方案,其实也没有真正解决闪屏问题,暂时因个人能力和知识方面的原因,还没有找到比较好的解决方案,也请园子里的各位大侠大哥们出手共享大家的解决方案。

出现闪屏问题的原因:在winform开发中,我们为了实现比较美工的UI界面,常常会使用一些漂亮的背景图片放在Form中或者Panel中,而一个Form中可能有其他好几个背景,它们的颜色图案都不太一样,这样就会出现闪屏的问题,尤其是在一些性能不好的机器上,很容易看出来。

至于怎么解决,我在网上也找了很久,还是没有找到比较完美点的解决方案,但是用一些其他的方法可以减少闪屏,也就是说闪屏的效果不明显,这样也可以勉强符合要求了,接下来简介以下几种方案。

1、不使用图片作为背景,而用纯色替代,如果是这样的话,也就不会出现闪屏了,但如果UI上有特别要求的,这条路就行不通了。

2、重写Panel,然后在Panel中添加背景图片,而不是把背景图片添加到Form中,重写的Panel代码如下:

View Code

 1     /// <summary>
 2     /// 一个Panel类,当设置背景图片时,控制其不会闪屏
 3     /// </summary>
 4     public class BackgroundPanel : Panel
 5     {
 6         protected override void OnPaintBackground(PaintEventArgs e)
 7         {
 8             return;
 9         }
10 
11         protected override void OnPaint(PaintEventArgs e)
12         {
13             
14             this.DoubleBuffered = true;
15             if (this.BackgroundImage != null)
16             {
17                 e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
18                 e.Graphics.DrawImage(this.BackgroundImage, new System.Drawing.Rectangle(0, 0, this.Width, this.Height),
19                 0, 0, this.BackgroundImage.Width, this.BackgroundImage.Height,
20                 System.Drawing.GraphicsUnit.Pixel);
21             }
22             base.OnPaint(e);
23         }
24     }

3、使用Form的双缓存可以减少闪屏,但效果不明显,可以在Form的Load事件里添加以下代码

View Code

1 this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
2 this.SetStyle(ControlStyles.DoubleBuffer, true);
3 this.SetStyle(ControlStyles.UserPaint, true);
4 this.SetStyle(ControlStyles.ResizeRedraw, true);

转载于:https://www.cnblogs.com/liubiaocai/archive/2011/07/19/2110248.html

winform闪屏问题解决方案相关推荐

  1. 破解版IDM导致电脑反复闪屏的解决方案

    破解版IDM导致电脑反复闪屏的解决方案 概括: 进入安全模式,卸载IDM,结束 文章目录 破解版IDM导致电脑反复闪屏的解决方案 问题原因 解决方式: 问题原因 在使用IDM(Internet Dow ...

  2. win10 explorer导致闪屏的解决方案

    前言 昨天刚接到朋友的求助,一连上网之后发现电脑一直在闪屏,疑似中毒的可能,系统是win10的,于是尝试按照惯例的方式进行故障排除. 猜测 第三方软件与系统的冲突 系统更新引起的 驱动更新导致的不兼容 ...

  3. Glide加载gif动画只播放一次的方法 Glide加载gif动画先显示最后一帧再开始播放动画导致闪屏的解决方案

    场景: Android App利用ViewPager制作引导页,然后利用Glide加载gif动画. 问题: 1.Glide加载gif动画如何只播放一次? 2.Glide加载gif动画,在viewPag ...

  4. Ubuntu14.04 Y460闪屏问题解决方案

    我的笔记本是联想Y460,安装了Ubuntu之后发现屏幕闪烁移位,而且在使用IDE的时候出现无法输入中文等问题,其实是显卡驱动的问题,N卡官网给的驱动不好用,尝试使用大黄蜂 参考:https://wi ...

  5. 关于联想Y700,玩游戏闪屏

    首先,问题描述:联想Y700-14isk  显卡:AMD R9 M375.插上电源玩游戏闪屏,使用电池不闪屏. 解决方案: 1.打开电源选项 2.选择更改计划设计 3.选择高级电源设置 选择AMD图形 ...

  6. Android一种实现夜间模式方式,同时解决调用recreate() 时闪屏问题

    最近项目中要实现夜间模式,调研了几种Android的夜间模式实现方式,都是需要动态的改变ui界面引用到color.drawable等资源文件.由于这个项目是迭代了比较多版本的,ui界面比较多,项目也比 ...

  7. Android如何接入渠道SDK的闪屏页?一个activity就够了

    如果你是做SDK开发的,应该接入过很多渠道SDK,常见的渠道有华为.小米.VIVO.OPPO.应用宝.UC九游.三星.小七等,还有一些小的渠道以及一些聚合渠道SDK,成千上万个渠道,其中部分渠道是需要 ...

  8. WinForm Flicker闪屏解决方案

    开发WinForm 程序时经常会遇到闪屏的问题,这会给用户造成很差的使用体验,所以必须妥善解决好这个问题. 首先,我们先要找出闪屏的原因,就我目前遇到的问题而言,其原因真是五花八门. 主要的原因有:使 ...

  9. Windows11系统闪屏解决方案

    Windows11系统闪屏解决方案 注:本文提到的解决方法适用于Edge浏览器闪屏.Media Player音视频播放器闪屏.桌面间歇性闪屏.Edge浏览器加载缓慢.安卓子系统选择英伟达独显时闪屏等问 ...

最新文章

  1. Android多媒体之GLES2战记第四集--移形换影
  2. Linux系统支持的目录文件有,【技术支持】linux操作系统有哪些文件和目录操作相关命令?...
  3. 【走过巨坑】android studio对于jni调用及运行闪退无法加载库的问题解决方案
  4. Klockwork告警常见错误
  5. Linux LXR 网站
  6. mysql之慢日志查询
  7. Erlang的散列数据结构
  8. Python 操作 MySQL 的5种方式(转)
  9. MYSQL学习笔记 (二)对数据库结构的增删改查
  10. 前端学习(3001):vue+element今日头条管理--项目初始化总结
  11. 剑指 Offer 09. 用两个栈实现队列(相邻相同操作只需要移动一次)
  12. AttributeError: module ‘urllib’ has no attribute ‘quote’的解决办法
  13. 快速查找Unity中的死循环
  14. com.jcraft.jsch.JSchException: Algorithm negotiation fail 异常解决
  15. ZFS的ashift参数解读
  16. 《你的降落伞是什么颜色》
  17. 微服务选择Spring Cloud还是Dubbo?
  18. deepin外置键盘无法打开键盘背光灯的解决方法
  19. CSS常用颜色配色的参数设置
  20. IE提示“存储空间不足,无法完成此操作”的错误(彻底解决包括产生原因)...

热门文章

  1. [shell]C语言调用shell脚本接口
  2. 不依赖任何系统API,用c语言实现gbk/utf8/unicode编码转换
  3. Python使用os.listdir()函数来得目录内容的介绍
  4. AngularJS快速上手
  5. CPU缓存一致性协议MESI
  6. Elasticsearch大文件搜索
  7. editplus的使用技巧
  8. POJ-3281 Dining 网络流最大流
  9. Java并发编程高级篇(十):分离任务的执行和结果的处理
  10. Java安全编码之用户输入