实时曲线组件 2.0

简介:

    实时曲线组件是以曲线来显示采集的数据,可用于工业实时检测等相关领域。

        此组件支持多路曲线同时显示;

        也支持后期数据的显示处理;

        还提供了多图对比的功能。

        最重要的是支持缩放显示功能,可无级放大需要的位置进行查看。

 

开发环境:Visual Studio .Net 2005

关系图:

自定义属性:

属性名称类型说明
AllowZoomBool是否允许缩放
AxisNameXstringX轴标题
AxisNameYstringY轴标题
AxisColorColor坐标刻度线颜色
DataSeriesCollection曲线的数据集合,PlotInfomation类的集合
MaginLeftint左边界的大小
MaginTopint上边界的大小
MaginRightint右边界的大小
MaginButtomint下边界的大小
OffsetXint显示多路曲线时,各曲线在X轴的相对偏移量
OffsetYint显示多路曲线时,各曲线在Y轴的相对偏移量

其中PlotInfomation的属性:

属性名称类型说明
LineColorColor曲线的颜色
LineWidthint曲线的粗细
DataPointsList<float>曲线的数据点
LineDashStyleDashStyle曲线的线型
Namestring曲线的名称
PointCountPerMinuteint每分钟包含的数据点个数
Visiblebool曲线是否可见

方法:

方法名称

说明

virtual void SaveDataPoint(BinaryWriter bw)以二进制保存曲线的数据
virtual void SaveDataPoint(StreamWriter tw)以文本保存曲线的数据
virtual void LoadDataPoint(BinaryReader bw)从二进制文件读取曲线的数据
virtual void LoadDataPoint(StreamReader tw)从文本文件读取曲线的数据
void SaveImage(string FileName)将当前图形保存到指定位图文件
virtual void SaveImage(Graphics g)将当前图形保存到指定Graphics对象
void updateRootRect(float x, float y, float width, float height)设置图形的最底层坐标范围,水平方向为时间,单位:分钟;纵向为数值型,支持负值。

示例:

  1. using  System;
  2. using  System.Collections.Generic;
  3. using  System.ComponentModel;
  4. using  System.Data;
  5. using  System.Drawing;
  6. using  System.Text;
  7. using  System.Windows.Forms;
  8. using  System.IO;
  9. namespace  System.Shangfei.Drawing.Plot
  10. {
  11.      /// <summary>
  12.      /// 
  13.      /// </summary>
  14.      public  partial  class  Form1 : Form
  15.     {
  16.          /// <summary>
  17.          /// 
  18.          /// </summary>
  19.          public  Form1()
  20.         {
  21.             InitializeComponent();
  22.             rnd =  new  Random();
  23.             propertyGrid1.SelectedObject = plotEx1;
  24.         }
  25.          private   void  toolStripButton2_Click( object  sender, EventArgs e)
  26.         {
  27.              this .plotEx1.DataSeries.Clear();
  28.              this .plotEx1.updateRootRect(0, 0, 20, 1000);
  29.             PlotInfomation pi =  new  PlotInfomation();
  30.             pi.Name =  "曲线1" ;
  31.             pi.LineColor = Color.Red;
  32.             pi.PointCountPerMinute = 30;
  33.             pi.DataPoints =  new  List< float >();
  34.              this .plotEx1.DataSeries.Add(pi);
  35.             PlotInfomation pi2 =  new  PlotInfomation();
  36.             pi2.Name =  "曲线2" ;
  37.             pi2.LineDashStyle = System.Drawing.Drawing2D.DashStyle.DashDotDot;
  38.             pi2.LineColor = Color.Green;
  39.             pi2.PointCountPerMinute = 50;
  40.             pi2.DataPoints =  new  List< float >();
  41.              this .plotEx1.DataSeries.Add(pi2);
  42.             timer1.Enabled =  true ;
  43.         }
  44.          private  Random rnd =  null ;
  45.          private   float  OldValue = 100;
  46.          private   void  timer1_Tick( object  sender, EventArgs e)
  47.         {
  48.              float  f = OldValue + ( float )rnd.NextDouble() * 4 - 2;
  49.              if  (f < 0)
  50.                 f = 0;
  51.              if  (f >1000)
  52.                 f = 1000;
  53.              this .plotEx1.DataSeries[0].DataPoints.Add(f);
  54.              this .plotEx1.DataSeries[1].DataPoints.Add(f + rnd.Next(10) - 5);
  55.             OldValue = f;
  56.              this .plotEx1.Invalidate();
  57.         }
  58.          private   void  toolStripButton1_Click( object  sender, EventArgs e)
  59.         {
  60.             timer1.Enabled =  false ;
  61.         }
  62.          private   void  toolStripButton4_Click( object  sender, EventArgs e)
  63.         {
  64.             SaveFileDialog sfd= new  SaveFileDialog();
  65.             sfd.Filter= "文本数据|*.txt" ;
  66.              if (sfd.ShowDialog()==DialogResult.OK)
  67.             {
  68.                 StreamWriter sw = File.CreateText(sfd.FileName);
  69.                  this .plotEx1.SaveDataPoint(sw);
  70.                 sw.Close();
  71.                 
  72.             }
  73.             sfd.Dispose();
  74.         }
  75.          private   void  toolStripButton3_Click( object  sender, EventArgs e)
  76.         {
  77.             OpenFileDialog ofd =  new  OpenFileDialog();
  78.             ofd.Filter= "文本数据|*.txt" ;
  79.              if  (ofd.ShowDialog() == DialogResult.OK)
  80.             {
  81.                 StreamReader sr = File.OpenText(ofd.FileName);
  82.                  this .plotEx1.LoadDataPoint(sr);
  83.                 sr.Close();
  84.                  //根据数据情况设置量程范围
  85.                  this .plotEx1.updateRootRect(0, 0, 20, 1000);
  86.             }
  87.             ofd.Dispose();
  88.         }
  89.          private   void  toolStripButton5_Click( object  sender, EventArgs e)
  90.         {
  91.             SaveFileDialog ofd =  new  SaveFileDialog();
  92.             ofd.Filter= "图形文件|*.bmp" ;
  93.              if  (ofd.ShowDialog() == DialogResult.OK)
  94.             {
  95.                  this .plotEx1.SaveImage(ofd.FileName);
  96.             }
  97.             ofd.Dispose();
  98.         }
  99.     }
  100. }

效果图:

在图形区域拉出一个选区后可以放大显示该选区,双击鼠标回退到上一个选区,支持无限放大,下图为放大后效果:

 

获取方式:http://item.taobao.com/item.htm?id=4546003182


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值