绘图图使用值从richTextBox c#
本文关键字:richTextBox 绘图 | 更新日期: 2023-09-27 17:53:08
是否可以绘制从richTextBox收集的数据图形?例如,我在richTextBox中有以下文本:
$GPRMC,152908.00,A,5307.0794359,N,02308.8918827,E,0.049,188.6,280612,0.0,E,D*3A
$GPRMC,152909.00,A,5307.0794307,N,02308.8918792,E,0.081,193.3,280612,0.0,E,D*3A
$GPRMC,152910.00,A,5307.0794343,N,02308.8918811,E,0.034,42.9,280612,0.0,E,D*0F
$GPRMC,152911.00,A,5307.0794410,N,02308.8918827,E,0.099,1.3,280612,0.0,E,D*30
$GPRMC,152912.00,A,5307.0794461,N,02308.8918808,E,0.055,331.9,280612,0.0,E,D*32
我想要一个图表为例纬度(时间):
5307.0794359 -> 152908.00
5307.0794307 -> 152909.00
5307.0794343 -> 152910.00
5307.0794410 -> 152911.00
5307.0794461 -> 152912.00
我不知道如何写一个函数,这将检索纬度从行[1,2,3,4,5]和时间从行[1,2,3,4,5]。然后画一个图表。
我需要一个通用函数,因为我可以有100行或400行等数据
有人能帮我吗?计数对我任何帮助(代码,示例,提示或链接)。
假设:
-
richTextBox
是System.Windows.Forms.RichTextBox
类的实例; -
chart
是System.Windows.Forms.DataVisualization.Charting.Chart
类的实例。
下面的方法用于解析string
s数组:
private static readonly CultureInfo EnglishCulture = CultureInfo.GetCultureInfo("en-US");
private static Tuple<double, double>[] GetData(string[] lines)
{
return Array.ConvertAll(lines, line =>
{
string[] elems = line.Split(',');
return new Tuple<double, double>(double.Parse(elems[3], EnglishCulture), double.Parse(elems[1], EnglishCulture));
});
}
用法:
var data = GetData(richTextBox.Lines);
现在你只需要绑定这个data
数组作为图表的DataSource
或手动添加它们到系列,如下所示:
chart.Series.Clear();
Series series = new Series("sample") { ChartType = SeriesChartType.Line, BorderWidth = 2, MarkerSize = 5, MarkerStyle = MarkerStyle.Square };
foreach (var p in data)
series.Points.Add(p.Item1, p.Item2);
chart.Series.Add(series);
我找到了问题的答案。我在Dmitry创建的代码中"稍微"修改了一行。
之前代码:private static readonly CultureInfo EnglishCulture = CultureInfo.GetCultureInfo("en-US");
新代码(刚刚添加了System.Globalization。在CultureInfo之前),它在Visual Studio 2012 Ultimate上工作),在更改之前,我有错误"CultureInfo未找到":
private static readonly System.Globalization.CultureInfo EnglishCulture = CultureInfo.GetCultureInfo("en-US");
我不知道为什么以前的代码对我不起作用…也许是Visual System版本。然而,现在一切都工作得很好,而且很有趣,因为现在它也可以在以前的代码上工作,对于新的更改也是如此。我不知道发生了什么事,但一切都很好。
谢谢Dmitry,谢谢你的帮助。
p。非常重要(必须在开头声明):
using System.Globalization;