Windows mobile 开发入门—控件开发(漂亮的进度条)

mobile-rm-50001

 

最终的效果如上图.它主要是由几个图片绘制而成,左右两个圆角、经过的、未经过的还有一个%分数。原理非常简单,我们看看代码吧。

ContractedBlock.gif ExpandedBlockStart.gif Code
  1using System;
  2
  3using System.Collections.Generic;
  4using System.ComponentModel;
  5using System.Data;
  6using System.Drawing;
  7using System.Text;
  8using System.Windows.Forms;
  9using System.Drawing.Imaging;
 10using System.Reflection;
 11
 12namespace Mediar.Controls
 13ExpandedBlockStart.gifContractedBlock.gif{
 14    public partial class ProgressBar : Control
 15ExpandedSubBlockStart.gifContractedSubBlock.gif    {
 16        
 17
 18        private byte maximum = 100;
 19        public byte Maximum
 20ExpandedSubBlockStart.gifContractedSubBlock.gif        {
 21ExpandedSubBlockStart.gifContractedSubBlock.gif            set { maximum = value; }
 22ExpandedSubBlockStart.gifContractedSubBlock.gif            get return maximum; }
 23
 24        }

 25
 26        private byte minimum = 0;
 27        public byte Minimum
 28ExpandedSubBlockStart.gifContractedSubBlock.gif        {
 29ExpandedSubBlockStart.gifContractedSubBlock.gif            set { minimum = value; }
 30ExpandedSubBlockStart.gifContractedSubBlock.gif            get return minimum; }
 31
 32        }

 33       
 34       
 35
 36ExpandedSubBlockStart.gifContractedSubBlock.gif        public int Value      getset; }
 37
 38
 39        private Color passColor = Color.Blue;
 40        public Color PassColor
 41ExpandedSubBlockStart.gifContractedSubBlock.gif        {
 42ExpandedSubBlockStart.gifContractedSubBlock.gif            set { passColor = value; }
 43ExpandedSubBlockStart.gifContractedSubBlock.gif            get return passColor;  }
 44
 45        }

 46
 47        private Color unPassColor = Color.Gray;
 48        public Color UnPassColor
 49ExpandedSubBlockStart.gifContractedSubBlock.gif        {
 50ExpandedSubBlockStart.gifContractedSubBlock.gif            set { unPassColor = value; }
 51ExpandedSubBlockStart.gifContractedSubBlock.gif            get return unPassColor; }
 52
 53        }

 54
 55        public ProgressBar()
 56ExpandedSubBlockStart.gifContractedSubBlock.gif        {
 57            this.Height = 33;
 58            InitializeComponent();
 59          
 60        }

 61
 62        protected override void OnPaint(PaintEventArgs pe)
 63ExpandedSubBlockStart.gifContractedSubBlock.gif        {   
 64
 65            DrawEllipse();
 66
 67
 68            base.OnPaint(pe);
 69        }

 70        private void DrawEllipse()
 71ExpandedSubBlockStart.gifContractedSubBlock.gif        {
 72            //System.Drawing.Pen myPen;
 73            //myPen = new System.Drawing.Pen(System.Drawing.Color.Red);
 74
 75            Brush bUnPass = new SolidBrush(unPassColor);
 76
 77            Brush bPass = new SolidBrush(passColor);
 78
 79            Assembly assembly = this.GetType().Assembly;
 80            System.IO.Stream passStart = assembly.GetManifestResourceStream(@"Mediar.Controls.Images.passStart.png");
 81            System.IO.Stream pass = assembly.GetManifestResourceStream(@"Mediar.Controls.Images.pass.png");
 82            System.IO.Stream unpass = assembly.GetManifestResourceStream(@"Mediar.Controls.Images.unpass.png");
 83            System.IO.Stream textBackgroud = assembly.GetManifestResourceStream(@"Mediar.Controls.Images.textBackgroud.png");
 84            System.IO.Stream end = assembly.GetManifestResourceStream(@"Mediar.Controls.Images.end.png");
 85
 86
 87            Image passStartpng = new Bitmap(passStart);
 88
 89            System.Drawing.Graphics formGraphics = this.CreateGraphics();
 90
 91            int iPass = (int)((Value * 1.0 / (Maximum - Minimum)) * this.Width);
 92            int y = 10;
 93
 94            formGraphics.DrawImage(passStartpng, 0, y);
 95
 96
 97            formGraphics.DrawImage(new Bitmap(pass), new Rectangle(8, y, iPass, 12), new Rectangle(00112), GraphicsUnit.Pixel);
 98
 99            formGraphics.DrawImage(new Bitmap(unpass), new Rectangle(8 + iPass, y, this.Width - iPass - 1412), new Rectangle(00112), GraphicsUnit.Pixel);
100
101
102            formGraphics.DrawImage(new Bitmap(end), this.Width - 8, y);
103
104            if (this.Width - iPass < 25)
105                iPass = this.Width - 25;
106            else if (iPass < 25)
107                iPass = 25;
108
109
110
111
112            formGraphics.DrawImage(new Bitmap(textBackgroud), iPass - 250);
113
114            SizeF sf = formGraphics.MeasureString(string.Format("{0}%", Value), this.Font);
115            formGraphics.DrawString(string.Format("{0}%", Value), this.Font, new SolidBrush(this.ForeColor), iPass - sf.Width / 2, (33 - sf.Height) / 2);
116
117
118
119
120            bPass.Dispose();
121            formGraphics.Dispose();
122        }

123
124 
125
126
127        internal Color GetTransparentColor(Bitmap image)
128ExpandedSubBlockStart.gifContractedSubBlock.gif        {
129            return image.GetPixel(00);
130        }

131    }

132}

133

 

转载于:https://www.cnblogs.com/mediar/archive/2009/08/28/1555765.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值