这个控件太傻瓜了,只搁在博客里算了。日前需要用到一个载入条,

但不想找GIF图片,.NET里面没有提供这个控件,只有ProgressBar。自己写吧!要写也不难,就是周期性绘制一个长方形,让那个长方形不停地向右移动。这个周期性的操作可以开一条线程Thread。我就用了一个WinForm的控件Timer

  用到了GDI+,重写OnPaint方法是免不了的。

         protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Rectangle rec=new Rectangle((int)(curLen - this.Width * barLength), , (int)(this.Width * barLength), this.Height - );
if (Application.RenderWithVisualStyles)
{
VisualStyleRenderer glyphRenderer = new VisualStyleRenderer(VisualStyleElement.ProgressBar.Chunk.Normal);
glyphRenderer.DrawBackground(e.Graphics, rec);
}
else
e.Graphics.FillRectangle(Brushes.Green, rec); e.Graphics.DrawRectangle(Pens.Black, , , this.Width-, this.Height-); }

自从上次写了那个可分租的GroupGridView之后,学多了一样东西,利用VisualStyleRenderer这个类的就可以使用上系统上的三维效果。

在Timer控件的Tick事件绑定以下方法,

         private void timer1_Tick(object sender, EventArgs e)
{
if (!this.DesignMode)
{
curLen += ;
if (curLen >= this.Width * ( + barLength)) curLen = ;
this.Refresh();
}
}

那个DesignMode就是判断是否在视图设计器上显示,如果不加那个判断,编译控件之后,拉到窗体里面,那Loading的效果也能看出来,这属性找了很久都没找到,感谢匡哥告诉我。其他也没什么好说的,上图上代码

由于是Win8的,看不到什么三维效果了。

     class LoadingBar:Control
{ private System.Windows.Forms.Timer timer1;
private System.ComponentModel.IContainer components; private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.timer1 = new System.Windows.Forms.Timer(this.components);
this.SuspendLayout();
//
// timer1
//
this.timer1.Enabled = true;
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
this.ResumeLayout(false); curLen = ;
barLength = 0.5f;
} internal float curLen;
internal float barLength; public LoadingBar()
{
InitializeComponent();
} private void timer1_Tick(object sender, EventArgs e)
{
if (!this.DesignMode)
{
curLen += ;
if (curLen >= this.Width * ( + barLength)) curLen = ;
this.Refresh();
}
} protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e); Rectangle rec=new Rectangle((int)(curLen - this.Width * barLength), , (int)(this.Width * barLength), this.Height - );
if (Application.RenderWithVisualStyles)
{
VisualStyleRenderer glyphRenderer = new VisualStyleRenderer(VisualStyleElement.ProgressBar.Chunk.Normal);
glyphRenderer.DrawBackground(e.Graphics, rec);
}
else
e.Graphics.FillRectangle(Brushes.Green, rec); e.Graphics.DrawRectangle(Pens.Black, , , this.Width-, this.Height-); }
}

LoadingBar

载入条LoadingBar的更多相关文章

  1. 自己定义progressdialog载入动画,这里还有旋转的载入条,美团,多个图片动画

    自己定义progressdialog载入动画,这里还有旋转的载入条,美团,多个图片动画 下载Demo:http://download.csdn.net/detail/menglele1314/8775 ...

  2. unity3d 自定义载入条/载入动画

    在 Assets 下新建文件夹 WebGLTemplates , 在 WebGLTemplates 文件夹下新建文件夹 MyTemplate, 新建index. 在 PlayerSetting 中的 ...

  3. Unity发布WebGL时如何修改默认的载入进度条

    Unity发布WebGL版本后,需要去除Unity的Logo,首先关闭Splash Image去除Made with Unity启动画面(在File->Build Settings->Pl ...

  4. 正在载入中......loading页面的几种方法

    网页加载过程中提示“载入中…”,特别是使用动画效果,可以一个“等待”的温馨提示,用户体验很不错.下面介绍几种方法. 第一种: 原理就是,在网页载入时在页面最中间打入一个层上面显示,"网页正在 ...

  5. 自己定义View学习之12/7(进度条之混合模式)

    今天重点内容是我们学习自己定义view里面的混合模式.事实上我们的画布就跟photoshop一样.是个图层关系,一层盖着一层.这样就导致有非常多种覆盖模式,这就是我们今天的主题."混合模式& ...

  6. 【React Native开发】React Native控件之ProgressBarAndroid进度条解说(12)

    ),React Native技术交流4群(458982758).请不要反复加群! 欢迎各位大牛,React Native技术爱好者增加交流!同一时候博客左側欢迎微信扫描关注订阅号,移动技术干货,精彩文 ...

  7. Flex应用程序如何启动

    Flex应用程序启动 编写一个简单的Flex应用程序并不复杂,就算你从来没接触过Flex程序设计,照着帮助的实例步骤,不需花多长时间也能做出一个漂亮简捷的小程序出来.不过,随着对Flex程序编写的深入 ...

  8. UIWebview交互之自己定义传值跳转

    UIWebview常常会用到和原生页面的跳转.有的可能还须要传值跳转.自己写了一个自己定义跳转的webview,能够跳转到指定控制器并传值,这须要和后台协商好.html中怎样传值跳转,即:html中的 ...

  9. 使用Quasar设计Material和IOS风格的响应式网站

    使用Quasar设计Material和IOS风格的响应式网站 栏目: CSS · 发布时间: 8个月前 来源: segmentfault.com   本文转载自:https://segmentfaul ...

随机推荐

  1. FusionCharts简单教程(六)------加载外部Logo

    一.加载外部文件Logo       在使用FusionCharts时,我们可能需要在加载图像的时候需要在图表中显示标识.图片等等.这里我们可以使用logoURL属性来实现.如: <chart ...

  2. 渣渣小本求职复习之路每天一博客系列——数据库基础(MySQL)(5)

    前情回顾:昨天学习了MySQL中索引的设计与使用,还了解了一些常见的SQL注入攻击的手段以及防范方法,一般来说,在面试的时候如果不是要求比较高,基本就够用了. 今天碰见一个拿了TP-LINK的offe ...

  3. Hello Mybatis 03 数据关联

    ResultMap 在实际的开发中,数据库不总是我们希望看到的样子.比如我们希望User的主键是id但是数据库偏偏喜欢叫它u_id,这样一来原先的resultType似乎就失效了,不带这么玩的,整个人 ...

  4. JavaScript 常用功能总结

    小编吐血整理加上翻译,太辛苦了~求赞! 本文主要总结了JavaScript 常用功能总结,如一些常用的JS 对象,基本数据结构,功能函数等,还有一些常用的设计模式. 目录: 众所周知,JavaScri ...

  5. How to fix updating ubuntu apt-get problem

    It's my new PC with a new os of ubuntu. every time when I want to install software or update apt-get ...

  6. Redis学习笔记~StackExchange.Redis实现分布式Session

    回到目录 对于多WEB的环境现在已经是必须的了,很难想像一台WEB服务器面对百万并发的响应,所以,我们需要多台WEB服务器集群合作,来缓解这种高并发,高吞吐的场景,而对于多WEB的场景又会有个问题出现 ...

  7. 爱上MVC3系列~开发一个站点地图(俗称面包屑)

    回到目录 原来早在webform控件时代就有了SiteMap这个东西,而进行MVC时代后,我们也希望有这样一个东西,它为我们提供了不少方便,如很方便的实现页面导航的内容修改,页面导航的样式换肤等. 我 ...

  8. display的理解

    display可把框内显示的内容改变(自我理解) none 此元素不会被显示. block 此元素将显示为块级元素,此元素前后会带有换行符. inline 默认.此元素会被显示为内联元素,元素前后没有 ...

  9. 1编写一个Java程序,计算半径为3.0的圆周长和面积并输出结果。2编写一个Java项目,定义包,在包下定义包含main方法的类。

  10. 浅谈JAVA集合框架

    浅谈JAVA集合框架 Java提供了数种持有对象的方式,包括语言内置的Array,还有就是utilities中提供的容器类(container classes),又称群集类(collection cl ...