public partial class FrmMain : Form { // 起始時間以毫秒為單位 int tickStart = 0; public FrmMain() { InitializeComponent(); this.timeDraw.Tick += new EventHandler(timeDraw_Tick); } private void FrmMain_Load(object sender, EventArgs e) { //獲取引用 GraphPane myPane = zedGraphControl1.GraphPane; //設置標題 myPane.Title.Text = "實時曲線"; //設置X軸說明文字 myPane.XAxis.Title.Text = "時間"; //設置Y軸說明文字 myPane.YAxis.Title.Text = "溫度"; //設置1200個點,假設每50毫秒更新一次,剛好檢測1分鍾,一旦構造后將不能更改這個值 RollingPointPairList list = new RollingPointPairList(1200); //開始,增加的線是沒有數據點的(也就是list為空) //增加一條名稱:Voltage,顏色Color.Bule,無符號,無數據的空線條 LineItem curve = myPane.AddCurve("溫度", list, Color.Blue, SymbolType.None); timeDraw.Interval = 50; //設置timer控件的間隔為50毫秒 timeDraw.Enabled = true; //timer可用 timeDraw.Start(); //開始 myPane.XAxis.Scale.Min = 0; //X軸最小值0 myPane.XAxis.Scale.Max = 30; //X軸最大30 myPane.XAxis.Scale.MinorStep = 1;//X軸小步長1,也就是小間隔 myPane.XAxis.Scale.MajorStep = 5;//X軸大步長為5,也就是顯示文字的大間隔 //改變軸的刻度 zedGraphControl1.AxisChange(); //保存開始時間 tickStart = Environment.TickCount; } private void timeDraw_Tick(object sender, EventArgs e) { //確保CurveList不為空 if (zedGraphControl1.GraphPane.CurveList.Count <= 0) { return; } //取Graph第一個曲線,也就是第一步:在GraphPane.CurveList集合中查找CurveItem LineItem curve = zedGraphControl1.GraphPane.CurveList[0] as LineItem; if (curve == null) { return; } //第二步:在CurveItem中訪問PointPairList(或者其它的IPointList),根據自己的需要增加新數據或修改已存在的數據 IPointListEdit list = curve.Points as IPointListEdit; if (list == null) { return; } // 時間用秒表示 double time = (Environment.TickCount - tickStart) / 1000.0; // 3秒循環 list.Add(time, Math.Sin(2.0 * Math.PI * time / 3.0)); Console.WriteLine(time.ToString()); Scale xScale = zedGraphControl1.GraphPane.XAxis.Scale; if (time > xScale.Max - xScale.MajorStep) { xScale.Max = time + xScale.MajorStep; xScale.Min = xScale.Max - 30.0; } //第三步:調用ZedGraphControl.AxisChange()方法更新X和Y軸的范圍 zedGraphControl1.AxisChange(); //第四步:調用Form.Invalidate()方法更新圖表 zedGraphControl1.Invalidate(); } private void Form1_Resize(object sender, EventArgs e) { SetSize(); } private void SetSize() { // 控制始終是以10像素插入矩形從客戶端的形 Rectangle formRect = this.ClientRectangle; formRect.Inflate(-10, -10); if (zedGraphControl1.Size != formRect.Size) { zedGraphControl1.Location = formRect.Location; zedGraphControl1.Size = formRect.Size; } } }