C#如何实现loading提示控件简单的实例

本文通过实例代码给大家介绍了c#实现简单的loading提示控件功能,代码非常简单,具有参考借鉴价值,需要的朋友参考下吧

自己画一个转圈圈的控件

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Drawing.Drawing2D;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace ExerciseUIPrj.controls{  public partial class LoadControl : Control  {    Color beginColor = Color.Blue;    Color endColor = Color.Red;    int wid = 10;    int curindex = 0;    Timer timer;    int instervel = 200;    string loadStr = "loading....";    public LoadControl()    {      InitializeComponent();      SetStyle(ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint|ControlStyles.OptimizedDoubleBuffer, true);      this.MinimumSize = new Size(40, 80);      if (!DesignMode)      {        Start();      }    }    public void Start()    {      if (timer == null)      {        timer = new Timer();        timer.Interval = instervel;        timer.Tick += Timer_Tick;      }      timer.Enabled = true;    }    public void Stop()    {      if (timer != null)      {        timer.Enabled = false;      }    }    void Timer_Tick(object sender, EventArgs e)    {      curindex++;      curindex = curindex >= wid ? 0 : curindex;      Refresh();    }    //计算各种圈圈相关    Point getPoint(double d, double r, Point center)    {      int x = (int)(r * Math.Cos(d * Math.PI / 180.0));      int y = (int)(r * Math.Sin(d * Math.PI / 180.0));      return new Point(center.X + x, center.Y - y);    }    GraphicsPath getPath(Point a, Point b)    {      Point c, d, e, f;      int h = 2;      Vertical(a, b, h, out c, out d);      Vertical(b, a, h, out e, out f);      GraphicsPath path = new GraphicsPath();      path.AddPolygon(new Point[] { c, d, e, f });      path.CloseAllFigures();      return path;    }    bool Vertical(Point pointa, Point pointb, double R, out Point pointc, out Point pointd)    {      pointc = new Point();      pointd = new Point();      try      {        //(X-xa)^2+(Y-ya)^2=R*R  距离公式        //(X-xa)*(xb-xa)+(Y-ya)*(yb-ya)=0  垂直        //解方程得两点即为所求点        var cx = pointa.X - (pointb.Y - pointa.Y) * R / Distance(pointa, pointb);        var cy = pointa.Y + (pointb.X - pointa.X) * R / Distance(pointa, pointb);        var dx = pointa.X + (pointb.Y - pointa.Y) * R / Distance(pointa, pointb);        var dy = pointa.Y - (pointb.X - pointa.X) * R / Distance(pointa, pointb);        pointc = new Point((int)cx, (int)cy);        pointd = new Point((int)dx, (int)dy);        return true;      }      catch      {        //如果A,B两点重合会报错,那样就返回false        return false;      }    }    double Distance(double xa, double ya, double xb, double yb)    {      double L;      L = Math.Sqrt(Math.Pow(xa - xb, 2) + Math.Pow(ya - yb, 2));      return L;    }    double Distance(Point pa, Point pb)    {      return Distance(pa.X, pa.Y, pb.X, pb.Y);    }    GraphicsPath getPath(double d, double r, Point c)    {      var p1 = getPoint(d, r / 2.0, c);      var p2 = getPoint(d, r, c);      return getPath(p1, p2);    }    //算渐变色    Color[] getColors()    {      int dr = (int)((endColor.R - beginColor.R) / (double)wid);      int dg = (int)((endColor.G - beginColor.G) / (double)wid);      int db = (int)((endColor.B - beginColor.B) / (double)wid);      List colors = new List();      for (int i = 0; i < wid; i++)      {        colors.Add(Color.FromArgb(beginColor.R + dr * i, beginColor.G + dg * i, beginColor.B + db * i));      }      return colors.ToArray();    }    //画圈圈    void drawRect(Graphics g)    {      int r = (int)(Size.Height / 2.0);      Point center = new Point(r, r);      var colors = getColors();      int findex = curindex;      for (int i = 0; i = wid ? cindex - wid : cindex;        g.FillPath(new SolidBrush(colors[cindex]), p);      }    }    //画字符串    void drawString(Graphics g)    {      if (Size.Height >= Size.Width) return;      Rectangle rect = new Rectangle(new Point(Size.Height, 0), new Size(Size.Width - Size.Height, Size.Height));      StringFormat sf = new StringFormat();      sf.Alignment = StringAlignment.Center;      sf.LineAlignment = StringAlignment.Center;      g.DrawString(loadStr, Font, Brushes.Black, rect,sf);    }    protected override void OnPaint(PaintEventArgs pe)    {      base.OnPaint(pe);      Graphics g = pe.Graphics;      g.SmoothingMode = SmoothingMode.HighQuality;      g.PixelOffsetMode = PixelOffsetMode.HighQuality;      drawRect(g);      drawString(g);    }    protected override void OnSizeChanged(EventArgs e)    {      base.OnSizeChanged(e);      if (Size.Height > Size.Width)      {        Size = new Size(Size.Height, Size.Height);      }    }  }}

总结

以上就是C#如何实现loading提示控件简单的实例的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1432493.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 08:20:07
下一篇 2025年12月17日 08:20:24

相关推荐

  • 分享10个纯 CSS 实现的 Loading 效果

    我们遇到加载,要么是ui框架中自带,要么就是百度,然后cv到项目中?但是,自己实现的时候,又会没有思路。下面本篇文章就来给大家分享10个纯 css 实现的 loading 效果,希望对大家有所帮助! 在推特上面看到 T. Afif 介绍的十个 Loading 效果。如上图。 Yeah,很赞哦,挺实用…

    2025年12月24日 好文分享
    000
  • 10+个让你的项目大放异彩的CSS loading加载特效,快来收藏吧!!

    本篇文章给大家分享10+个loading加载特效,保证让你的项目大放异彩,希望对大家有所帮助,快来收藏吧!! 相信大家经常会使用到加载动画,但是大部分组件库的加载样式都太简洁了。 这次给前端工友们收集了10+个高逼格加载动画效果!!复制就能直接用!! 来吧展示 1、一个”滚动&#8221…

    2025年12月24日 好文分享
    000
  • 如何用html和CSS实现页面加载loading动画效果

    在浏览网站时经常会遇到页面“正在加载,请稍后”的情况,此时页面会出现一个圆圈一直在转动,直到加载完成。正在学习html和css的小伙伴,你会用html和css实现页面加载动画效果吗?这篇文章就和大家一起研究css3页面加载loading动画,并将页面加载动画的代码分享给大家,感兴趣的小伙伴可以参考借…

    2025年12月24日
    000
  • 纯CSS3实现页面圆圈加载(loading)动画特效

    在网速不好的情况下打开网站或者观看视频,页面加载会很慢,这时一般会提示用户“页面正在加载中,请稍后”,而且会有一个圆圈一直在转动。正在学习html和css的小伙伴,你会用css3实现圆圈加载动画效果吗?这篇文文章就给大家分享一个纯css3实现的圆圈(loading)加载动画特效,感兴趣的小伙伴可以参…

    2025年12月24日
    000
  • CSS实现富有创意的页面加载(loading)动画效果

    小伙伴们在浏览网站时有没有遇到页面“loading中,请稍后”的情况,作为前端工程师,你会用css制作页面加载(loading)动画效果吗?这篇文章给大家分享一个富有创意的页面加载(loading)动画代码,有一定的参考价值,感兴趣的朋友可以看看。 制作一个富有创意的页面加载(loading)动画需…

    2025年12月24日
    000
  • 纯CSS3实现页面loading加载动画效果(附代码)

    打开页面时,经常会遇到页面正在loading(加载)的情况,作为一个前端开发人员,你知道如何用css3实现页面加载动画效果吗?这篇文章就和大家分享一个即炫酷又实用的css3 loading加载动画效果的代码,有一定的参考价值,感兴趣的朋友可以看看。 制作页面loading 加载动画需要用到很多CSS…

    2025年12月24日
    000
  • CSS3实现的10种Loading效果

    这篇文章主要为大家详细介绍了css3实现10种loading效果,效果实现简单新颖,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 用CSS3实现了几种常见的Loading效果,虽然很简单,但还是分享一下,顺便也当是做做笔记…… 第1种效果: 代码如下: .loading{ width: 80px…

    2025年12月24日 好文分享
    000
  • 关于CSS3制作的20种loading动效

    本篇文章主要介绍了详解纯css3制作的20种loading动效,内容挺不错的,现在分享给大家,也给大家做个参考。 一些网站或者app在加载新东西的时候,往往会有一些好看有趣的loading图,大部分的loading样式都可以使用css3写出来,不仅比直接使用gif图简单方便,还能节省加载时间和空间,…

    2025年12月24日 好文分享
    000
  • CSS的loading动画效果使用教程

    这次给大家带来CSS的loading动画效果使用教程,CSS的loading动画效果使用注意事项有哪些,下面就是实战案例,一起来看一下。 本文介绍了一份纯CSS loading效果代码示例,分享给大家,具体如下: 预览 代码 使用了CSS的keyframes自定义关键帧动画 Loading p#pr…

    2025年12月24日
    000
  • css3绘制圆形loading转圈动画

    这次给大家带来css3绘制圆形loading转圈动画,css3绘制圆形loading转圈动画的注意事项有哪些,下面就是实战案例,一起来看一下。 如何绘制一个圆圆的loading圈 小程序里需要一个像下面的loading,原生的没有,引入别的组件库又太大,所有决定自己写个。 1.基本原理 动态的实现原…

    2025年12月24日
    000
  • 使用CSS3来实现Loading动画特效的代码案例分享

    使用css3来实现loading动画特效的代码案例分享 代码如下: css3 loading等待加载代码 – 何问起 @keyframes move { from { transform: translate(0,50%); } to { transform: translate(0,850%); …

    2025年12月23日
    000
  • CSS如何实现饼状的Loading等待图的效果(图)

    这篇文章主要介绍了用纯css实现饼状loading等待图效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 写在前面 之前碰到一个小练习,就是用纯CSS3来写饼状的loading效果,之前着实没有写过这玩意儿,小花完全没头绪,然后参考了张鑫旭老师的CSS3实现鸡蛋饼饼状图loading等待转转转…

    2025年12月23日 好文分享
    000
  • 关于CSS3的animate如何实现“…”loading动画效果(一)

    实现如图所示的点点点loading效果: 一:CSS3 animation实现代码 html代码: 提交订单中… css代码: .ani_dot { font-family: simsun; }:root .ani_dot { /* 这里使用Hack是因为IE6~IE8浏览器下, vertica…

    2025年12月23日
    000
  • 关于CSS3的animate如何实现“…”loading动画效果(二)

    box-shadow实现的打点效果 简介 box-shadow理论上可以生成任意的图形效果,当然也就可以实现点点点的loading效果了。 实现原理 html代码,首先需要写如下html代码以及class类名: 订单提交中 css代码 .dotting { display: inline-block…

    2025年12月23日
    000
  • jimdo怎么插入html5时间轴_jimdo时间轴html5代码与节点样式【实操】

    Jimdo网站需用自定义HTML5代码实现时间轴:一、内联HTML+CSS轻量嵌入;二、外链CSS+语义化HTML便于复用;三、调用timeline-js-lite库支持交互;四、纯CSS方案零依赖高性能。 如果您希望在 Jimdo 网站中呈现可视化的时间发展脉络,但默认编辑器不支持原生时间轴组件,…

    2025年12月23日
    000
  • visual怎么创建html5_VS新建HTML File选HTML5模板快速创建页面【创建】

    可在Visual Studio中通过新建文件选HTML5模板、新建ASP.NET Core Web App项目或手动创建.html文件并输入及html:5代码段三种方式快速生成HTML5网页。 如果您在 Visual Studio 中需要快速创建一个符合 HTML5 标准的网页文件,则可通过新建项目…

    2025年12月23日
    000
  • jimdo怎么插入html5粒子效果_jimdo粒子效果html5库引入与参数调整【攻略】

    可在Jimdo通过自定义HTML区块引入tsparticles库实现动态粒子效果,或用内联SVG替代;需调整颜色、数量等参数适配主题,并修复脚本加载问题。 如果您希望在 Jimdo 网站中添加动态 HTML5 粒子效果(如背景浮动粒子、鼠标交互连线等),但发现 Jimdo 编辑器默认不支持直接嵌入 …

    2025年12月23日
    000
  • vs.net怎么运行html_vs.net运行html步骤【指南】

    首先创建Web项目或配置外部浏览器预览HTML文件。通过新建ASP.NET项目并添加HTML页面后按Ctrl+F5运行,或安装Live Server等插件实现静态文件实时预览,也可在选项中设置Chrome等外部浏览器直接打开HTML文件以查看效果。 如果您在使用 Visual Studio .NET…

    2025年12月23日
    000
  • vs中如何添加html_VS开发工具中添加HTML文件【工具】

    在 Visual Studio 中添加 HTML 文件需根据项目类型选择方法:一、通过解决方案资源管理器→添加新项→选“HTML 页面”模板;二、手动创建.html文件后通过“显示所有文件”→“包括在项目中”;三、用快捷键Shift+Alt+A快速调出模板;四、若无模板,需通过 Visual Stu…

    2025年12月23日
    000
  • HTML如何弹出提示框_JavaScript交互实现方法【指南】

    JavaScript提供五种弹出提示框方法:alert()显示不可编辑警告;confirm()返回布尔值实现确认交互;prompt()获取用户文本输入;自定义DOM元素实现灵活样式;第三方库如SweetAlert2支持美观异步提示。 如果您希望在网页中向用户显示简短信息、确认操作或获取简单输入,Ja…

    2025年12月23日
    000

发表回复

登录后才能评论
关注微信