public Form1()
{
////初始化
myPane = nodeChart.GraphPane;
myPane.Title.Text = "节点-时间趋势图\n(Time-Values)";
myPane.XAxis.Title.Text = "节点时间";
myPane.YAxis.Title.Text = "节点值";
//X轴时间格式
myPane.XAxis.Type = AxisType.Date;
myPane.XAxis.Scale.Format = "HH:mm:ss";
//myPane.XAxis.Scale.Min = 0;
//////X轴最大30
//myPane.XAxis.Scale.Max = 30;
//////X轴小步长1,也就是小间隔
//myPane.XAxis.Scale.MinorStep = 1;
//////X轴大步长为5,也就是显示文字的大间隔
////myPane.XAxis.Scale.MajorStep = 5;
//nodeChart.AxisChange();
//nodeChart.GetChildAtPoint().
timer1.Interval = 100;
timer1.Enabled = true;
timer1.Start();
myCurve = myPane.AddCurve("curve 1", Plist, Color.Blue, SymbolType.Diamond);
myCurve2 = myPane.AddCurve("curve 2", Plist1, Color.Red, SymbolType.Circle);
// 设置图标的颜色和渐变色
myPane.Chart.Fill = new Fill(Color.White,
Color.FromArgb(255, 255, 166), 45.0F);
//BarItem.CreateBarLabels(myPane, false, "f0");
}
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Stop();
if (timeBo)
{
RollingPointPairList list = new RollingPointPairList(1200);
RollingPointPairList list1 = new RollingPointPairList(1200);
//如果重新选择了节点号,就清空之前的趋势图曲线,并重新赋值给变量
if (comboBoxNodeID != comboBoxItemNodeID.Text.ToString())
{
myCurve.Clear();
myCurve2.Clear();
Plist.Clear();
Plist1.Clear();
comboBoxNodeID = comboBoxItemNodeID.Text.ToString();
nodeChart.Refresh();
}
List<object> objList = ListChartData();
//X轴时间变量
for (int i = 0; i < objList.Count; i++)
{
//double time = (double)new XDate(DateTime.Now.AddSeconds(-(100 - i)));
double time = (double)new XDate(DateTime.Now);
List<string> listStr = (List<string>)objList[i];
if (listStr[0] == comboBoxItemNodeID.Text)
{
if (listStr.Count > 2)
{
double value = Convert.ToDouble(listStr[1]);
double value1 = Convert.ToDouble(listStr[2]);
Plist.Add(time, value);
Plist1.Add(time, value1);
}
else
{
double value = Convert.ToDouble(listStr[1]);
Plist.Add(time, value);
//MessageBox.Show("a");
}
//刷新
nodeChart.Refresh();
}
}
////立方形
//BarItem myCurve = myPane.AddBar("curve 1", Plist, Color.Blue);
//BarItem myCurve2 = myPane.AddBar("curve 2", Plist1, Color.Red);
//LineItem myCurve = myPane.AddCurve("curve 1", list, Color.Blue);
//LineItem myCurve2 = myPane.AddCurve("curve 2", list1, Color.Red);
nodeChart.AxisChange();
//nodeChart.Refresh();
//nodeChart.Invalidate();
// 创建每条bar的label,其中第2个参数表示是否显示在bar的中心位置,第3个参数表示label的排列方向
//BarItem.CreateBarLabels(myPane, false, "f0");
if (myCurve.NPts>40)
{
myCurve.RemovePoint(0);
}
if (myCurve2.NPts > 40)
{
myCurve2.RemovePoint(0);
}
timer1.Start();
}
}