源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Winform圆形环绕的Loading动画实现代码

  • 时间:2020-11-10 09:30 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Winform圆形环绕的Loading动画实现代码
之前写了一个WPF的圆形环绕的Loading动画,现在写一个Winform的圆形环绕的Loading动画。 1.新建Winform项目,添加一个pictureBox控件,命名为:pictureBox; 2.引用中添加using System.Drawing.Drawing2D; 3.Form窗体命名为:Loading,cs全部代码如下:
[u]复制代码[/u] 代码如下:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Collections; using System.Drawing.Drawing2D; namespace Circle_ProcessBar {     public partial class Loading : Form     {         private int count = -1;         private ArrayList images = new ArrayList();         public Bitmap[] bitmap = new Bitmap[8];         private int _value = 1;         private Color _circleColor = Color.Red;         private float _circleSize = 0.8f;         public Loading()         {             InitializeComponent();               }         public Color CircleColor         {             get { return _circleColor; }             set             {                 _circleColor = value;                 Invalidate();             }         }         public float CircleSize         {             get { return _circleSize; }             set             {                 if (value <= 0.0F)                     _circleSize = 0.05F;                 else                     _circleSize = value > 4.0F ? 4.0F : value;                 Invalidate();             }         }         public Bitmap DrawCircle(int j)         {             const float angle = 360.0F / 8; Bitmap map = new Bitmap(150, 150);             Graphics g = Graphics.FromImage(map);             g.TranslateTransform(Width / 2.0F, Height / 2.0F);             g.RotateTransform(angle * _value);             g.InterpolationMode = InterpolationMode.HighQualityBicubic;             g.SmoothingMode = SmoothingMode.AntiAlias;             int[] a = new int[8] { 25, 50, 75, 100, 125, 150, 175, 200 };             for (int i = 1; i <= 8; i++)             {                 int alpha = a[(i + j - 1) % 8];                 Color drawColor = Color.FromArgb(alpha, _circleColor);                 using (SolidBrush brush = new SolidBrush(drawColor))                 {                     float sizeRate = 3.5F / _circleSize;                     float size = Width / (6 * sizeRate);                     float diff = (Width / 10.0F) - size;                     float x = (Width / 80.0F) + diff;                     float y = (Height / 80.0F) + diff;                     g.FillEllipse(brush, x, y, size, size);                     g.RotateTransform(angle);                 }             }             return map;         }         public void Draw()         {             for (int j = 0; j < 8; j++)             {                 bitmap[7-j] = DrawCircle(j);             }         }         protected override void OnResize(EventArgs e)         {             SetNewSize();             base.OnResize(e);         }         protected override void OnSizeChanged(EventArgs e)         {             SetNewSize();             base.OnSizeChanged(e);         }         private void SetNewSize()         {             int size = Math.Max(Width, Height);             Size = new Size(size, size);         }         public void set()         {             for (int i = 0; i < 8; i++)             {                 Draw();                 Bitmap map = new Bitmap((bitmap[i]), new Size(120, 110));                 images.Add(map);             }             pictureBox.Image = (Image)images[0];            pictureBox.Size = pictureBox.Image.Size;         }         private void pictureBox_Click(object sender, EventArgs e)         {             this.Visible = false;             base.Dispose();         }         private void Timer_Tick(object sender, EventArgs e)         {             set();             count = (count + 1) % 8;             pictureBox.Image = (Image)images[count];         }         private void button1_Click(object sender, EventArgs e)         {             this.Visible = false;             base.Dispose();         }     } }
4.效果如图: [img]http://files.jb51.net/file_images/article/201401/2014122161214249.gif[/img]
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部