c#怎么实现加载提示控件

  

c#怎么实现加载提示控件?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!

自己画一个转圈圈的控件

使用系统;
  使用System.Collections.Generic;
  使用System.ComponentModel;
  使用System.Data;
  使用System.Drawing;
  使用System.Drawing.Drawing2D;
  使用来;
  使用text;
  使用System.Threading.Tasks;
  使用System.Windows.Forms;
  名称空间ExerciseUIPrj.controls
  {
  公共部分类LoadControl:控制
  {
  颜色beginColor=Color.Blue;
  颜色endColor=Color.Red;
  int wid=10;
  int curindex=0;
  计时器计时;
  int instervel=200;
  字符串loadStr=凹釉?...“;
  公共LoadControl ()
  {
  InitializeComponent ();
  SetStyle (ControlStyles。UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles。OptimizedDoubleBuffer,真正的);
  这一点。MinimumSize=new大小(80);
  如果(! DesignMode)
  {
  开始();
  }
  }
  公共空间开始()
  {
  如果(计时器==null)
  {
  计时器=new计时器();
  计时器。间隔=instervel;
  计时器。蜱虫+=Timer_Tick;
  }
  计时器。启用=true;
  }
  公共空间停止()
  {
  如果(计时器!=null)
  {
  计时器。启用=false;
  }
  }
  空白Timer_Tick(对象发送方,EventArgs e)
  {
  curindex + +;
  curindex=curindex祝辞=wid ?0:curindex;
  Refresh ();
  }//计算各种圈圈相关
  点getPoint(双d双r,点中心)
  {
  int x=(int) (r *数学。因为(d *数学。π/180.0));
  int y=(int) (r *数学。罪(d *数学。π/180.0));
  返回新的点(中心。X + X,中心。Y - Y);
  }
  GraphicsPath getPath (a, b)
  {
  点c, d, e, f;
  int h=2;
  垂直(a、b、h, c, d);
  垂直(b, a, h, e, f);
  GraphicsPath路径=new GraphicsPath ();
  路径。AddPolygon(新点[]{c, d, e, f});
  path.CloseAllFigures ();
  返回路径;
  }
  bool垂直(pointa点,点pointb、双R,点pointc,出点pointd)
  {
  pointc=new点();
  pointd=new点();
  试一试
  {//(X-xa) ^ 2 + (Y-ya) ^ 2=R *距离公式//(X-xa) * (xb-xa) + (Y-ya) * (yb-ya)=0垂直//解方程得两点即为所求点
  var残雪=pointa。X - (pointb。Y - pointa.Y) * R/距离(pointa pointb);
  var cy=pointa。Y + (pointb。X - pointa.X) * R/距离(pointa pointb);
  var dx=pointa。X + (pointb。Y - pointa.Y) * R/距离(pointa pointb);
  var dy=pointa。Y - (pointb。X - pointa.X) * R/距离(pointa pointb);
  pointc=new点(cx (int), (int) cy);
  pointd=new点((int) dx, dy (int));
  返回true;
  }
  抓
  {//如果A、B两点重合会报错,那样就返回错误的
  返回错误;
  }
  }
  双距离(双xa,双丫,双xb,双yb)
  {
  双L;
  L=Math.Sqrt(数学。战俘(xa - xb, 2) +数学。战俘(ya - 2));
  返回L;
  }
  双距离(pa、pb)
  {
  返回的距离(pa。X, pa。Y, pb。X, pb.Y);
  }
  GraphicsPath getPath(双d双r、c点)
  {
  var p1=getPoint (2.0 d, r/c);
  var p2=getPoint (d、r、c);
  返回getPath (p1, p2);
  }//算渐变色
  颜色[]色鬼()
  {=(int) ((endColor博士int。R - beginColor.R)/(双)wid);
  int dg=((endColor (int)。G - beginColor.G)/(双)wid);
  int db=((endColor (int)。B - beginColor.B)/(双)wid);
  List颜色=new List ();
  for (int i=0;我& lt;wid;我+ +)
  {
  colors.Add (Color.FromArgb (beginColor。*我博士R + beginColor。G + dg *我,beginColor。B + db *我));
  }
  返回colors.ToArray ();
  }//画圈圈
  空白绘制矩形(图形g)
  {
  int r=(int)(大小。高度/2.0);
  点中心=new点(r, r);
  var=色鬼颜色();
  int findex=curindex;
  for (int i=0;我& lt;wid;我+ +)
  {
  双d=(360.0/wid) *我;
  var p=getPath (d, r,中心);
  int cindex=findex + i;
  cindex=cindex祝辞=wid ?cindex - wid: cindex;
  g。FillPath(新SolidBrush(颜色[cindex]), p);
  }
  }//画字符串
  空拉带(图形g)
  {
  如果(大小。高度祝辞=宽度)返回;
  矩形矩形=new矩形(新点(大小。高度,0),新尺寸(大小。宽度——大小。高度,Size.Height));
  StringFormat科幻=new StringFormat ();
  科幻小说。对齐=StringAlignment.Center;
  科幻小说。LineAlignment=StringAlignment.Center;
  g。拉带(loadStr、字体、画笔。黑色,矩形,科幻小说);
  }
  保护覆盖空白>感谢各位的阅读!看完上述内容,你们对c#怎么实现加载提示控件大概了解了吗?希望文章内容对大家有所帮助。如果想了解更多相关文章内容,欢迎关注行业资讯频道。

c#怎么实现加载提示控件