功能增强的进度条控件(源码)

最近青岛微软开发者俱乐部 www.qddn.net上有位网友希望得到能改变颜色的进度条,正好我也在做一套.net的通用组件,就把它写出来了,因为比较简单,也没有多少技术含量,就把它帖出来,希望给别的朋友一点帮助

这个进度条控件,除了具有普通进度条的功能以外,还具有如下功能:

设置进度条的背景色和前景色

设置进度条的外观方式(3D,single,none)

是否自动显示当前进度比例(比如在进度条的中间显示当前进度58%)

当然,这个功能还可以增加很多,比如背景色和前景色也可以用图片代替,还有其它的功能打算在以后有时间时再添加,这次就写这些了。

代码如下:

using System;

using System.Collections;

using System.ComponentModel;

using System.Drawing;

using System.Drawing.Drawing2D ;

using System.Data;

using System.Windows.Forms;

 

namespace XiaoPang.Windows

{

     /// <summary>

     /// GProgressBar 的摘要说明。

     /// </summary>

     public class GProgressBar : System.Windows.Forms.UserControl

     {

         /// <summary>

         /// 必需的设计器变量。

         /// </summary>

         private System.ComponentModel.Container components = null;

 

         public GProgressBar()

         {

              // 该调用是 Windows.Forms 窗体设计器所必需的。

              InitializeComponent();

              base.Height = 23 ;

              this.Resize+=new EventHandler(GProgressBar_Resize);

              this.LocationChanged+=new EventHandler(GProgressBar_Resize);

         }

 

         private void GProgressBar_Resize(object sender,System.EventArgs e)

         {

              base.Refresh() ;

         }

 

         private  int mMax =100;

         [Browsable(true), Description("最大值"), Category("XiaoPang")]

         public int Max

         {

              get

              {

                   return mMax ;

              }

 

              set

              {

                   mMax = value > 0?value:1;

              }

         }

        

         [Browsable(true), Description("大小"), Category("XiaoPang")]

          public new Size Size

         {

 

              get

              {

                   return base.Size ;

              }

 

              set

              {

                   base.Size = value ;

              }

         }

         private  int mMin =0;

         [Browsable(true), Description("最小值"), Category("XiaoPang")]

         public int Min

         {

              get

              {

                   return mMin ;

              }

 

              set

              {

                   mMin = value ;

              }

         }

 

         private int mStep = 1 ;

         [Browsable(true), Description("步长"), Category("XiaoPang")]

         public int Step

         {

              get

              {

                   return mStep ;

              }

 

              set

              {

                   mStep = value ;

              }

        

         }

             

         [Browsable(true), Description("背景色"), Category("XiaoPang")]

         public override Color BackColor

         {

 

              get

              {

                   return base.BackColor ;

              }

 

              set

              {

                   base.BackColor = value ;

              }

         }

         [Browsable(true), Description("前景色"), Category("XiaoPang")]

         public override Color ForeColor

         {

 

              get

              {

                   return base.ForeColor ;

              }

 

              set

              {

                   base.ForeColor = value ;

              }

         }

         private bool mRate = false;

         [Browsable(true), Description("是否显示比例数字"), Category("XiaoPang")]

         public bool Rate

         {

              get

              {

                   return mRate ;

              }

 

              set

              {

                   mRate = value ;

              }

         }

         private int mValue = 0 ;

         [Browsable(true), Description("当前值"), Category("XiaoPang")]

         public int Value

         {

              get

              {

                   return mValue ;

              }

              set

              {

                   if (value <= this.Max)

                    mValue = value ;

                   else

                       mValue = this.Max ;

                   this.Refresh() ;

              }

         }

 

 

         private BorderStyle mBorderStyle = BorderStyle.Fixed3D ;

         [DefaultValue(0), Category("XiaoPang"),Description("外观")]

         public BorderStyle BorderStyle

         {

              get

              {

                   return this.mBorderStyle;

              }

              set

              {

                   if (this.mBorderStyle != value)

                   {

                       this.mBorderStyle = value;

                       this.Refresh() ;

                   }

              }

         }

 

         public void PerformStep()

         {

              Value++ ;

         }

 

         private void DrawProgress(Graphics g,Rectangle rect)

         {

              int iWidth = (Value*rect.Width)/Max ;

              Rectangle DrawRect = new Rectangle(rect.X,rect.Y,iWidth,rect.Height) ;

              SolidBrush front = new SolidBrush(this.ForeColor) ;

              g.FillRectangle(front,DrawRect);    

              if (Rate)

              {

                   int iRate = Value*100/Max ;

                   string strText = iRate.ToString() + "%" ;

                   int iTextWidth = (int)g.MeasureString(strText,this.Font).Width ;

                   int iStart = rect.Left + (rect.Width - iTextWidth)/2 ;          

                   Point posS = new Point(iStart -10,rect.Top) ;

                   Point posE = new Point(iStart + iTextWidth + 10,rect.Bottom) ;

                   LinearGradientBrush textbrush = new LinearGradientBrush(posS,posE,this.BackColor,this.ForeColor) ;

                   g.DrawString(strText,this.Font,textbrush,iStart ,rect.Top+5) ;

              }            

         }

 

         protected override void OnPaintBackground(PaintEventArgs pevent)

         {

              SolidBrush back = new SolidBrush(this.BackColor) ;

              pevent.Graphics.FillRectangle(back,pevent.ClipRectangle);   

         }

 

         protected override void OnPaint(PaintEventArgs e)

         {

              if (!this.DesignMode)

                DrawProgress(e.Graphics,e.ClipRectangle) ;

             

              switch(BorderStyle)

              {

                   case BorderStyle.None:

                       break ;

                   case BorderStyle.FixedSingle:

                       System.Windows.Forms.ControlPaint.DrawBorder3D(e.Graphics,e.ClipRectangle,Border3DStyle.Flat) ;

                       break ;

                   case BorderStyle.Fixed3D:

                       System.Windows.Forms.ControlPaint.DrawBorder3D(e.Graphics,e.ClipRectangle,Border3DStyle.Sunken) ;

                       break ;

              }

         }

 

         /// <summary>

         /// 清理所有正在使用的资源。

         /// </summary>

         protected override void Dispose( bool disposing )

         {

              if( disposing )

              {

                   if(components != null)

                   {

                       components.Dispose();

                   }

              }

              base.Dispose( disposing );

         }

 

         #region 组件设计器生成的代码

         /// <summary>

         /// 设计器支持所需的方法 - 不要使用代码编辑器

         /// 修改此方法的内容。

         /// </summary>

         private void InitializeComponent()

         {

              //

              // GProgressBar

              //

              this.Name = "GProgressBar";

              this.Size = new System.Drawing.Size(150, 24);

 

         }

         #endregion

     }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt自定义控件大全Designer源码是一个包含了多种自定义控件的全套源码,它主要用于在Qt设计师中使用。Qt是一个跨平台的C++应用程序开发框架,提供了丰富的图形界面控件,但有时候我们可能需要自定义一些特殊的控件来满足我们的需求。 Qt自定义控件大全Designer源码包含了很多常用的自定义控件,如自定义按钮、进度条、滑块、验证码输入框等等。这些控件的设计和实现已经封装好,我们只需要将源码添加到我们的项目中,然后在Qt设计师中直接使用即可。 使用Qt自定义控件大全Designer源码有以下几个优点: 1.提供了丰富的自定义控件选择:Qt自定义控件大全Designer源码包含了多样化的控件,可以满足不同项目的需求。无论是一些简单的控件,还是一些复杂的控件,我们都可以找到合适的选择。 2.减少开发时间和工作量:使用源码中的自定义控件可以减少我们从头开始设计和实现的工作,节省了大量的开发时间和工作量。我们只需要将源码添加到项目中并正确配置,就可以直接在设计师中使用这些自定义控件。 3.提高应用程序的美观性和用户体验:Qt自定义控件大全Designer源码中的控件经过精心设计和实现,具有良好的界面效果和用户交互体验。使用这些自定义控件可以为我们的应用程序提供更加美观和友好的界面。 总之,Qt自定义控件大全Designer源码是一个提供了多种自定义控件的全套源码,使用它可以快速、方便地实现各种自定义控件,提高应用程序的开发效率和用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值