C#中绘制曲线图

z1900c 2017-11-14 03:03:56
我在C#中参考别人的程序写了以下代码用来绘制温度曲线图
初始化
        private void Form1_Load(object sender, EventArgs e)
{
toolStripStatusLabel1.Text = "提示:请打开串口";
comboBox2.SelectedIndex = 6;

foreach (string vPortName in SerialPort.GetPortNames())
{
comboBox1.Items.Add(vPortName);
}

GetRandomColor();
zedGraphControl1.IsShowPointValues = true;
zedGraphControl1.GraphPane.Title.Text = "温度曲线";
zedGraphControl1.GraphPane.XAxis.Title.Text = "位置";
zedGraphControl1.GraphPane.YAxis.Title.Text = "温度";

double[] x1 = new double[1];
double[] y1 = new double[1];
x1[0] = 1;
y1[0] = 20;

zedGraphControl1.AxisChange();
zedGraphControl1.Invalidate();

zedGraphControl1.GraphPane.CurveList.Clear();
zedGraphControl1.Invalidate();
}

                switch (REC_Data[3])
{
case 0:
richTextBox1.Text = richTextBox1.Text + temp_data.ToString("X2") + " ";
richTextBox1.SelectionStart = richTextBox1.Text.Length;
richTextBox1.ScrollToCaret();

x[0] = line_cnt;
y[0] = (temp_data * 10 - 27315) / 100;
zedGraphControl1.GraphPane.AddCurve(REC_Data[3].ToString(), x, y, System.Drawing.Color.FromArgb(R[REC_Data[3]], G[REC_Data[3]], B[REC_Data[3]]), ZedGraph.SymbolType.None);
zedGraphControl1.AxisChange();
zedGraphControl1.Invalidate();

break;
case 1:
richTextBox2.Text = richTextBox2.Text + temp_data.ToString("X2") + " ";
richTextBox2.SelectionStart = richTextBox2.Text.Length;
richTextBox2.ScrollToCaret();

x[0] = line_cnt;
y[0] = (temp_data * 10 - 27315) / 100;
zedGraphControl1.GraphPane.AddCurve(REC_Data[3].ToString(), x, y, System.Drawing.Color.FromArgb(R[REC_Data[3]], G[REC_Data[3]], B[REC_Data[3]]), ZedGraph.SymbolType.None);
zedGraphControl1.AxisChange();
zedGraphControl1.Invalidate();

break;
}


但是绘制出来的图像有两个严重问题,如图
每个绘制的点都是从(0,0)开始延伸,而不是图中线的顶点连在一起。第二个问题是,为什么图上方会不断出现颜色段和序号的对应提示,本来不应该提示一次的吗?本人新手,这个程序是参考别人写的,msdn的文档看的一知半解,请各位大佬指点
...全文
799 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
a472544436 2019-08-21
  • 打赏
  • 举报
回复
折腾啥这是,用MSchart得了,你以为这东西高级到哪里去
z1900c 2017-11-14
  • 打赏
  • 举报
回复
引用 3 楼 ourhouzi 的回复:
引用 2 楼 z1900c 的回复:
[quote=引用 1 楼 ourhouzi 的回复:] zedGraphControl1.GraphPane.AddCurve 是添加一条曲线 返回一个LineItem 实例, 你需要的是在LineItem 上 addpoint
懂了懂了,非常感谢指出问题,问一下zedGraphControl1.GraphPane.AddCurve("", x1, y1, GetRandomColor(), ZedGraph.SymbolType.Star);这一句中五个参数分别是什么意思呢,我找不到相关的文档解释
曲线名字 x1 y1 就是曲线初始的点 GetRandomColor() 是你自己获取颜色的方法吧 ZedGraph.SymbolType.Star点的形状[/quote]多谢多谢,解决问题,多谢指点
ourhouzi 2017-11-14
  • 打赏
  • 举报
回复
引用 2 楼 z1900c 的回复:
引用 1 楼 ourhouzi 的回复:
zedGraphControl1.GraphPane.AddCurve 是添加一条曲线 返回一个LineItem 实例, 你需要的是在LineItem 上 addpoint
懂了懂了,非常感谢指出问题,问一下zedGraphControl1.GraphPane.AddCurve("", x1, y1, GetRandomColor(), ZedGraph.SymbolType.Star);这一句中五个参数分别是什么意思呢,我找不到相关的文档解释
曲线名字 x1 y1 就是曲线初始的点 GetRandomColor() 是你自己获取颜色的方法吧 ZedGraph.SymbolType.Star点的形状
z1900c 2017-11-14
  • 打赏
  • 举报
回复
引用 1 楼 ourhouzi 的回复:
zedGraphControl1.GraphPane.AddCurve 是添加一条曲线 返回一个LineItem 实例, 你需要的是在LineItem 上 addpoint
懂了懂了,非常感谢指出问题,问一下zedGraphControl1.GraphPane.AddCurve("", x1, y1, GetRandomColor(), ZedGraph.SymbolType.Star);这一句中五个参数分别是什么意思呢,我找不到相关的文档解释
ourhouzi 2017-11-14
  • 打赏
  • 举报
回复
zedGraphControl1.GraphPane.AddCurve 是添加一条曲线 返回一个LineItem 实例, 你需要的是在LineItem 上 addpoint

110,557

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧