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#怎么实现加载提示控件