在此示例中,我们将构建一个实时读取其数据并每秒更新一次的折线图。

我们首先创建一个空的WinForms项目。我们假设您已经安装了Charting for WinForms组件,您可以在VisualStudio工具箱中看到包含图表组件的列表。

拖动LineChart控件并将其放在窗体上。您现在应该看到对您需要自动添加到项目中的三个库的引用:

  • MindFusion.Charting;
  • MindFusion.Charting.WinForms;
  • MindFusion.Common;

1.系列和数据

我们的图表将在X轴上绘制时间戳。这就是我们选择DateTimeSeries类来创建图表系列的原因。构造函数需要两个列表 - 一个具有DateTime值,另一个具有double值。它们分别为X轴和Y轴提供数据。我们还必须提供另外两个参数:一个用于开始,一个用于时间段结束。

List dates = new List();List values = new List();

为了模仿实时功能,我们将使用计时器。我们的计时器每秒会产生一个随机数。一开始我们将有一个没有值的列表。渐渐地,我们将填充值,一旦达到100,我们将开始删除第一个值并在数组末尾添加新值。

这就是我们初始化计时器的方式:

Random ran;ran = new Random();  Timer dataTimer = new Timer();dataTimer.Tick += new EventHandler(GenerateData);dataTimer.Interval = 1000;dataTimer.Start();

我们来看看GenerateData方法:

private void GenerateData(object sender, EventArgs e) { dates.Add(DateTime.Now); values.Add(2 + ran.NextDouble() * 8.0); if (dates.Count > 100) { dates.RemoveAt(0); values.RemoveAt(0); }...}

我们总是添加当前的DateTime。由于计时器每秒都会滴答,这正是我们想要的。一旦值为100,我们就开始删除列表开头的值。

现在让我们创建DateTime系列。它需要周期开始和结束的参数。我们总是将第一个和最后一个DateTime值分配为此系列的DateTime数据的边界:

DateTimeSeries series = new DateTimeSeries(dates, values, dates[0], dates[dates.Count-1]);

然后我们看看我们是否已经添加了一个系列,如果是的话 - 替换它。如果没有添加系列 - 添加新系列:

if (lineChart1.Series.Count > 0) lineChart1.Series[0] = series;else lineChart1.Series.Add(series);

默认情况下,DateTimeSeries从X轴渲染其值 - DateTime实例作为X轴的标签。我们可以使用DateTimeFormat属性自定义它们的外观。预定义的DateTimeFormat成员没有选项,其中值作为时间戳呈现为“14:23:34”。因此,我们选择DateTimeFormat “CustomDateTime”并使用CustomDateTime指定格式:

series.DateTimeFormat = DateTimeFormat.CustomDateTime;series.CustomDateTimeFormat = "H:mm:ss"; 

2. X轴

我们希望每个时刻只能看到最后10个值。应该渲染其他90或者它们,但是用户必须滚动才能看到它们。我们使用DateTimeSeries的MinValue和MaxValue属性实现:

series.MinValue = 0;series.MaxValue = 0.1 * dates.Count;

为了只渲染最后10个系列,我们使用XAxis属性 - MaxValue和MinValue一旦DateTimeSeries 的MaxValue大于1,这意味着至少添加了10个值,我们调整了值的可见范围。 X轴,只有最后10个可见:

if (series.MaxValue > 1) { lineChart1.XAxis.MaxValue = series.MaxValue; lineChart1.XAxis.MinValue = series.MaxValue - 1.0; }

我们还为此轴设置了title:

lineChart1.XAxis.Title = "Time";

让我们使用ShowXCoordinates属性隐藏在DateTime标记顶部渲染的数值:

lineChart1.ShowXCoordinates = false; 

3.Y轴

lineChart1.YAxis.MinValue = 0;lineChart1.YAxis.MaxValue = 20;lineChart1.YAxis.Interval = 2;

我们还更改了轴标题,我们使用NumberFormat属性来渲染具有浮点的间隔:

lineChart1.YAxis.Title = "Visitors (in thousands)";lineChart1.YAxis.NumberFormat = "N";

4.Grid

让我们渲染垂直网格条纹。我们希望它们是虚线和浅灰色。我们使用GridType GridColor和GridLineStyle来自定义网格:

lineChart1.GridType = GridType.Vertical;lineChart1.Theme.GridLineStyle = System.Drawing.Drawing2D.DashStyle.Dash;lineChart1.Theme.GridLineColor = Color.FromArgb(192, 192, 192);

请注意,GridColor和GridLineStyle是LineChart的Theme属性的属性,添加一个额外的 - 当用户沿轴滚动图表时停止网格条纹移动:

lineChart1.PinGrid = true;

5.图例

图例从Series的Title属性中获取其标签。在我们的例子中我们设置:

series.Title = "Server Requests";

我们想要更改图例背景以使图例更容易被发现:

lineChart1 

我们使用半透明画笔,当用户将图例移动到另一个图表元素时,可以看到图表细节。

6.线条颜色

我们想要用红色渲染线条。我们选择MixedSeriesStyle类作为我们应用程序的样式类。您可以使用适合您的任何其他* SeriesStyle类:

// assign a reb brush for the serieslineChart1.Plot.SeriesStyle = new MixedSeriesStyle() {  UniformStrokeThickness = 5, UniformStroke = new MindFusion. 

点击“了解更多”下载产品最新试用版

↓↓↓

提取series中的数值_Mindfusion教程:WinForms中的实时图表相关推荐

  1. java中分支_[Java教程]JavaScript中的分支结构

    [Java教程]JavaScript中的分支结构 0 2016-06-30 23:03:37 说到JavaScript中的分支结构,我们就不得不提到流程控制这个词,我们所有的程序都是由数据和算法组成的 ...

  2. python用方括号提取字符中的数值_python 从字符串中提取数值

    python中用re.findall函数,里面写正则表达式 root@vdirectva:/home/lic_auto_scale# cat re.py import re test=['10Mbps ...

  3. python用方括号提取字符中的数值_Python使用re模块正则提取字符串中括号内的内容示例...

    Python使用re模块正则提取字符串中括号内的内容示例 本文实例讲述了Python使用re模块正则提取字符串中括号内的内容操作.分享给大家供大家参考,具体如下: 直接上代码吧: # -*- codi ...

  4. java提取字符串中的数字并升序排序_java小练习,将字符串中的数值进行升序排序...

    问题引出:正常情况下用int数组可以直接用sort()方法排序,但是字符串不能. 思路:将字符串变成字符串数组,字符串数组变成int数组,再进行排序,排序后再变成字符串 将字符串中的数值从小到大排序 ...

  5. mysql数据库管理文件_数据库管理中文件的使用教程

    摘要:这篇MySQL栏目下的"数据库管理中文件的使用教程",介绍的技术点是"数据库管理.使用教程.数据库.的使用.文件.管理",希望对大家开发技术学习和问题解决 ...

  6. python如何读取excel数据-python怎么读取excel中的数值

    最近测试过程中需要用到python读取excel用例数据,于是去了解和学习了下xlrd库,这里只记录使用过程中读取excel数据相关操作. 安装xlrd库(推荐学习:Python视频教程) 可以下载x ...

  7. java引用类型和值类型_[Java教程]JavaScript中值类型和引用类型的区别

    [Java教程]JavaScript中值类型和引用类型的区别 0 2017-02-24 00:00:35 JavaScript的数据类型分为两类:原始类型和对象类型.其中,原始类型包括:数字.字符串和 ...

  8. r语言mfrow全程_如何使用R完成文章中图片处理小教程

    一起成长的经历 - 技术服务  课程定制 - - 如何使用R完成文章中图片处理小教程 - Two Histograms with melt colors 柱状图显示数值变量的分布.这篇文章解释了如何在 ...

  9. python怎么读取excel-python怎么读取excel中的数值

    最近测试过程中需要用到python读取excel用例数据,于是去了解和学习了下xlrd库,这里只记录使用过程中读取excel数据相关操作. 安装xlrd库(推荐学习:Python视频教程) 可以下载x ...

最新文章

  1. shell中的$()、${}、$(())、(())
  2. 【贪心】畜栏预定(ybtoj 贪心-1-3)
  3. 技术干货 | 如何在 Library 中使用/依赖 mPaaS?
  4. Express-静态资源-路由-ajax-session
  5. 一文带你从零认识什么是XLA
  6. java 事件监听应用_Spring Boot应用事件监听示例详解
  7. 特斯拉起诉小鹏汽车员工窃取 30 多万份商业机密,何小鹏回应
  8. java填吧_请高手为我填上JAVA代码吧
  9. 大道至简第二章-‘是懒人造就了方法’读后感
  10. XP高仿win7宽栏风格主题
  11. ubuntu 14.04 安装 diffmerge
  12. C++ | (struct)结构体变量作为函数参数调用的方法小结
  13. 计算机中的逻辑与或非,与或非运算(与或非逻辑运算口诀)
  14. 总纲篇:塑胶材料选型、模具工艺、注塑工艺指导
  15. 全连接层输入为什么是固定维度的(拉直/压扁Flatten成为列向量)
  16. HyperLynx(二十三)DDR(六)DDRx总线批量仿真
  17. Vue2.0高仿饿了么核心模块移动端Web App项目爬坑(一)
  18. win10隐藏任务栏_如何隐藏或删除Windows 10任务栏图标
  19. oracle 拉里 网线通道,拉里.埃里森:Oracle云计算服务进入超速增长阶段
  20. Weather GAN:实现晴、阴、雾、雨、雪之间的天气状况自由迁移

热门文章

  1. 顶点(vertexs) 图元(primitives) 片元(fragments片断) 像素(pixels)
  2. 山水人家(附简要教程)
  3. 基于Mozilla Thunderbird的扩展开发(四)---修改Thunderbird源代码实现自动保存附件...
  4. Java基础篇:反射
  5. 万物皆为向量:在线向量召回工程服务化实践
  6. 美团某程序员哀叹:能力很强,却因为不会“向上管理”而惨遭被裁!怎么办?...
  7. 阿里二面:Redis 中的 AOF 文件太大了怎么办?
  8. Query理解在美团搜索中的应用
  9. IDEA跟Eclipse险些打一架。Maven:都住手,我来一统天下
  10. 如何看待年仅28岁却亿万身家的码农郭宇宣布从字节跳动退休?