源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

C#波形图控件制作示例程序

  • 时间:2021-06-14 10:35 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C#波形图控件制作示例程序
[img]http://files.jb51.net/file_images/article/201311/20131129095826.png?201310291001[/img] 首先添加一个timer,50s
[u]复制代码[/u] 代码如下:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Text; using System.Windows.Forms; namespace High_Tech_Watch {     public partial class UserControl1 : UserControl     {         public UserControl1()         {             InitializeComponent();         }         int[] oldLine;         int SIZE = 15; //方格的大小         Pen LINEPEN = new Pen(Color.FromArgb(3,64, 129), 1); //背景线条颜色         Pen FORELINEPEN = new Pen(Color.LightBlue);  //前景线条颜色         private void UserControl1_Paint(object sender, PaintEventArgs e)         {             Graphics g = e.Graphics;             int Bvalue;             Bvalue = Value;             if (shake != 0)             {                 Random ro = new Random();                 int r = ro.Next(0, shake);                 Value += (ro.Next(-shake, 0) / 2) + r/2;                 if (Value>100)                 {                     Value = 100;                 }                 if (Value < 0)                 {                     Value = 0;                 }             }             int h = (int)(this.Size.Height / SIZE);             int w = (int)(this.Size.Width / SIZE )+ 1;//这里加1保证了滚动时最右侧垂直线及时出现             for (; h >= 0;h-- )             {                 g.DrawLine(LINEPEN, new Point(0, h * SIZE), new Point(this.Size.Width, h * SIZE));             }             for (; w>=0;w-- )             {                 g.DrawLine(LINEPEN, new Point((w * SIZE) - limits, 0), new Point((w * SIZE) - limits, this.Size.Height));             }             for (int i = oldLine.Length - 1,j = 0;i >j ;j++ )             {                 g.DrawLine(FORELINEPEN, new Point(j,(this.Height - (int)(((float)oldLine[j] / (float)100) * (float)this.Height) ) -1),                     new Point(j + 1, (this.Height - (int)(((float)oldLine[j+1] / (float)100) * (float)this.Height))-1) );             }             for (int i = oldLine.Length - 1, j = 0; i > j; j++)             {                 oldLine[j] = oldLine[j + 1];             }             oldLine[oldLine.Length - 1] = Value;             pintLightPoint(e);             Value = Bvalue;         }         private void pintLightPoint(PaintEventArgs e)         {             Graphics g = e.Graphics;             g.DrawImage(global::High_Tech_Watch.Resource1.未标题_2,new Rectangle(new Point(this.Width - 50,this.Height - (int)(((float)lightPointValue / (float)100) * (float)this.Height ) - 10),new Size(20,20)));         }         int lightPointValue = 50;         int limits = 0;//滚动就靠他了,是一个范围         private void timer1_Tick(object sender, EventArgs e)         {             limits++;             if (limits >= SIZE)             {                 limits = 0;             }             this.Invalidate();         }         private void UserControl1_Load(object sender, EventArgs e)         {             oldLine = new int[this.Width - 40];         }         int shake = 0;         [DefaultValue(0),Description("抖动率,值控件输入的值自动抖动(禁用是为0)"),Category("属性值")]         public int Shake         {             get{return shake;}             set{shake = value;}         }         [DefaultValue(0),Description("当前数值"),Category("属性值")]         public int Value         {             get { return lightPointValue; }             set { lightPointValue = value; }         }         [Description("当前数值"), Category("属性值")]         public Pen LinePen         {             get { return LINEPEN; }             set             {                 LINEPEN = value;                 this.Invalidate();             }         }         private void UserControl1_Resize(object sender, EventArgs e)         {             if ((this.Width - 40) > oldLine.Length)             {                  int[] newArry = new int[this.Width - 40];                 oldLine.CopyTo(newArry, newArry.Length - oldLine.Length);                 oldLine = new int[this.Width - 40];                 oldLine = newArry;             }             if ((this.Width - 40) < oldLine.Length)             {                 int[] newArry = new int[this.Width - 40];                 for (int i = newArry.Length - 1,j = oldLine.Length - 1; i >=0 ;i--,j-- )                 {                    newArry[i] = oldLine[j];                 }                 oldLine = new int[this.Width - 40];                 oldLine = newArry;             }         }     } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部