最近在遇到数据加载耗时比较长,想用一个动态等待效果来告诉用户程序还没死,以下是实现过程。
实现两种效果:一种条形进度条,不停滚动;一种有几个红点在动态循环。原本想上传视频更清楚一点,无奈不太会用,丢人了……
第一种效果:
条形进度条
优势:极其简单,直接使用的是winform里面的控件—progressbar,将其style属性设置为Marquee,MarqueeAnimationSpeed属性定义其滚动速度。在合适的地方调用它就能实现功能了。该控件还可以跟BackGroundWorker配合使用,实时显示加载进度。
缺点:太过依赖于控件了,我们都知道并不是所有时候都能用控件的,比如说progressbar能使用的平台是受限的(见MSDN)。
问题:还不知道如何改变中间绿色滚动的宽度。
第二种效果:
红色转圈
优势:仅使用picturebox、timer两种比较常见的控件,可替代性强。
缺点:代码量要多一点,理解难度要大一点。
问题:还没完全看懂代码,比如如何改变点的大小、形状等等。
引用Drawing来绘制:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 using System.Drawing.Drawing2D; 2 #region 等待界面 3 private int count = -1; 4 private ArrayList images = new ArrayList(); 5 public Bitmap[] bitmap = new Bitmap[8]; 6 private int _value = 1; 7 private Color _circleColor = Color.Red; 8 private float _circleSize = 0.8f; 9 10 private int width = 200;//设置圆的宽 11 private