C#如何显示曲线
我用C#winform制作了一个串口软件,现在我想把18b20采集的温度数据通过串口将温度变化的曲线显示在P串口软件上上,应该如何实现? 把采样的数据用GDI+画线画出来 ZedGraph 严重同意楼上,很好的一个画曲线图的控件。 我正好最近也需要用C#画线。MARK .net 3.5 开始已经带了chart 组件。用法参考这个网站的例子。http://archive.msdn.microsoft.com/mschart mark!! mark! mark一下,我一直用measurement studio for vs2008 回复【8楼】wangyi1e
-----------------------------------------------------------------------
有破——解版的吗? 顶、、、 学习! 谢谢各位!再好好研究研究。 使用 自带的Chart 可显示 温度变化的曲线
public System.Windows.Forms.DataVisualization.Charting.Chart chart_WSD;
public void WSD_图表节点显示设定(string DZ)
{
string DT = " DT >= '" + dateTimePicker_WSD_S.Value.ToString() + "' and DT <='" + dateTimePicker_WSD_E.Value.ToString() + "' ";
apps.DBF.T_温湿度记录.Open(" select * from wsdlist where dz = '" + DZ + "' and " + DT + " order by dt ");
if (apps.DBF.T_温湿度记录.data.Rows.Count > 2)
{
chart_WSD.ChartAreas.AxisX.Minimum = DateTime.Parse(apps.DBF.T_温湿度记录.data.Rows["DT"].ToString()).ToOADate();
chart_WSD.ChartAreas.AxisX.Maximum = DateTime.Parse(apps.DBF.T_温湿度记录.data.Rows["DT"].ToString()).ToOADate();
}
else
{
chart_WSD.ChartAreas.AxisX.Minimum = dateTimePicker_WSD_S.Value.ToOADate();
chart_WSD.ChartAreas.AxisX.Maximum = dateTimePicker_WSD_E.Value.ToOADate();
}
chart_WSD.ChartAreas.AxisX2.Minimum = chart_WSD.ChartAreas.AxisX.Minimum;
chart_WSD.ChartAreas.AxisX2.Maximum = chart_WSD.ChartAreas.AxisX.Maximum;
chart_WSD.Series.Clear();
chart_WSD.DataSource = apps.DBF.T_温湿度记录.Bs;
/* if (checkedListBox_wsd.GetItemChecked(0))//def
{
Chart_Set(ref chart_WSD, "WD0", "平均温度");
Chart_Set(ref chart_WSD, "SD0", "平均温度");
Chart_Set(ref chart_WSD, "WD1", "内温度");
Chart_Set(ref chart_WSD, "SD1", "内温度");
Chart_Set(ref chart_WSD, "WD2", "外温度");
Chart_Set(ref chart_WSD, "SD2", "外温度");
}*/
checkedListBox_wsd.SetItemChecked(0, true);
checkedListBox_wsd.SetItemChecked(1, true);
checkedListBox_wsd.SetItemChecked(2, true);
uC_通用表格_WSD.dGV.Columns["DZ"].HeaderText = "地址";
uC_通用表格_WSD.dGV.Columns["DT"].HeaderText = "时间";
uC_通用表格_WSD.dGV.Columns["XH"].Visible = false;
uC_通用表格_WSD.dGV.Columns["CTRL"].Visible = false;
uC_通用表格_WSD.dGV.Columns["SD"].Visible = false;
uC_通用表格_WSD.dGV.Columns["WD17"].Visible = false;
uC_通用表格_WSD.dGV.Columns["SD17"].Visible = false;
for (int i=0;i<checkedListBox_wsd.Items.Count;i++)
{
string WDS="WD"+i.ToString();
string SDS="SD"+i.ToString();
string TXT = i.ToString();
if (i == 0) TXT = "平均";
if (i == 1) TXT = "内部";
if (i == 2) TXT = "外部";
Chart_Set(ref chart_WSD,WDS,TXT+"温度");
Chart_Set(ref chart_WSD, SDS,TXT + "湿度");
uC_通用表格_WSD.dGV.Columns.HeaderText = TXT + "温度";
uC_通用表格_WSD.dGV.Columns.HeaderText = TXT + "湿度";
if (checkedListBox_wsd.GetItemChecked(i))
{
uC_通用表格_WSD.dGV.Columns.Visible = true;
uC_通用表格_WSD.dGV.Columns.Visible = true;
chart_WSD.Series.Enabled = true;
chart_WSD.Series.Enabled = true;
//chart_WSD
}
else
{
uC_通用表格_WSD.dGV.Columns.Visible = false;
uC_通用表格_WSD.dGV.Columns.Visible = false;
chart_WSD.Series.Enabled = false;
chart_WSD.Series.Enabled = false;
}
}
} 这是这个ZedGraph组件:ourdev_668116S8JVV9.rar(文件大小:577K) (原文件名:zedgraph_dll_v509_459.rar)
下面这个网址有使用方法:
http://hi.baidu.com/sakuram/blog/item/0cc40450dbc8726b84352475.html mark 回复【14楼】zp820
这是这个zedgraph组件: (原文件名:zedgraph_dll_v509_459.rar)
下面这个网址有使用方法:
http://hi.baidu.com/sakuram/blog/item/0cc40450dbc8726b84352475.html
-----------------------------------------------------------------------
谢谢,可以用,有祥细的说明更好 mark~ 推荐微软免费的MSChart,完全收购于多年致力于图表控件的Dundas公司 mark! 我用的ZedGraph,还不错!
开源,免费。 回复【20楼】Delong_z天之蛟龙
我用的zedgraph,还不错!
开源,免费。
-----------------------------------------------------------------------
是的,Zedgraph很不错。不过从08年底这个项目就没有再更新过了,请楼主把这一点考虑进去,如果zedgraph当前功能可以在将来一直满足你的需求,那么是一个不错的选择,否则,请考虑微软的mschart mark 学习 静态的用 MSChart 很好
但据说 MSChart 动态不行,刷新会闪烁
网上流传的一个所谓的解决闪烁的办法,但很多人说不靠谱
不知道有没有更好的办法可以解决这个问题 以前我做过一个每秒更新4次无闪烁的MSChart程序,只要打开offscreen drawing就行了。我还试过用API阻止MSChart过快ReDraw,也是有效果的。 学习了 mark 回复【17楼】fanwt
mark~
-----------------------------------------------------------------------
Dundas被MS收购了?好事啊
页:
[1]