[编程]我也来绘图,模拟进度条的控件


  想在自己程序的启动部分做一个漂亮的过度效果么?是不是见到别人的程序中在启动时候一个特漂亮的进度条似的东西,很是舒畅啊?下面这个东西,就是这个功能了,支持一个onComplete事件,你可以附加事件上去啦,还支持自定义进度条颜色、边框色、背景色。里面都有详细的注释,相信不用再怎么说明原理了。

usingSystem;
usingSystem.Drawing;
usingSystem.Windows.Forms;

namespaceYoker.Library.FormControl
{
///<summary>
///说明:进度条模拟类
///作者:Yoker.Wu
///原创地址:http://yoker.cnblogs.com/
///</summary>

publicpartialclassProgressBar:Control
{

组件设计器生成的代码

publicProgressBar()
{
InitializeComponent();
}


重新覆盖父类的宽、高度

进度条相关参数

publicdelegatevoidCompleteHandler(objectsender);
publiceventCompleteHandleronComplete;
///<summary>
///开始演示运行
///</summary>

publicvoidStart()
{
while(true)
{
if(width++>=this.Width-5)break;
System.Threading.Thread.Sleep(
10);
}

onComplete(
this);
}


protectedoverridevoidOnPaint(PaintEventArgspe)
{
base.OnPaint(pe);
//画外边框
pe.Graphics.DrawRectangle((newPen(this.BorderColor,1)),0,0,this.Width-1,this.Height-1);
//画内边距
pe.Graphics.FillRectangle(newSolidBrush(this.BackgroundColor),1,1,this.Width-2,this.Height-2);
//画进度条块
pe.Graphics.FillRectangle(newSolidBrush(this.ProgressBarColor),2,2,width,height);

}

}

}

要看效果么?使用下面的这个代码就可以啦。

usingSystem;
usingSystem.Windows.Forms;

namespaceYoker.Demo.ProgressBar
{
///<summary>
///在进度条上单击,开始演示。完成后,进度条增加一个双击事件,关闭窗体
///</summary>

classProgram
{
staticvoidMain(string[]args)
{
Formform
=newForm();
form.FormBorderStyle
=FormBorderStyle.None;
form.Width
=320;
form.Height
=30;
form.TopLevel
=true;
form.StartPosition
=FormStartPosition.CenterScreen;

Yoker.Library.FormControl.ProgressBarprogressbar
=newYoker.Library.FormControl.ProgressBar();
progressbar.Width
=form.Width;
progressbar.Height
=form.Height;
progressbar.ProgressBarColor
=System.Drawing.Color.DarkGreen;

progressbar.onComplete
+=newYoker.Library.FormControl.ProgressBar.CompleteHandler(progressbar_onComplete);
progressbar.Click
+=newEventHandler(progressbar_Click);

form.Controls.Add(progressbar);

form.ShowDialog();
}


staticvoidprogressbar_onComplete(objectsender)
{
Yoker.Library.FormControl.ProgressBarprogressbar
=senderasYoker.Library.FormControl.ProgressBar;
progressbar.DoubleClick
+=newEventHandler(form_DoubleClick);
}


staticvoidform_DoubleClick(objectsender,EventArgse)
{
Application.Exit();
}


staticvoidprogressbar_Click(objectsender,EventArgse)
{
Yoker.Library.FormControl.ProgressBarprogressbar
=senderasYoker.Library.FormControl.ProgressBar;
progressbar.Start();
}

}

}

欢迎大家指正。

优质内容筛选与推荐>>
1、oracle-single row function
2、焦油坑和人月神话--人月笔记1
3、C# 文件流操作 之 删除、复制、转移多个文件
4、在线正则匹配替换
5、Linux(ubnutu)下编写运行c,c++程序的方法gcc+gdb(图示)


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn