Mindfusion教程:WinForms中的实时图表

翻译|使用教程|编辑:王香|2019-02-18 09:35:05.000|阅读 71 次

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

相关链接:

下载Mindfusion最新版本

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

Mindfusion

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

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

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

1.系列和数据

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

List<DateTime> dates = new List<DateTime>();
List<double> values = new List<double>();

为了模仿实时功能,我们将使用计时器。我们的计时器每秒会产生一个随机数。一开始我们将有一个没有值的列表。渐渐地,我们将填充值,一旦达到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 series
lineChart1.Plot.SeriesStyle = new MixedSeriesStyle()
    {  
         UniformStrokeThickness = 5,
         UniformStroke = new MindFusion.
            

购买Mindfusion正版授权,请点击“咨询在线客服”哟!



标签:JavaScript 图表

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果

登录慧都网发表评论登录


暂无评论...

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
相关厂商
相关产品
MindFusion.Diagramming for ActiveX

它能帮助你创建工作流图,流程图和图表处理

MindFusion.Diagramming for WinForms

FlowChart.NET是一款能够帮助你轻松创建流程图和示意图的.NET控件,可以自定义设计样式和图表框颜色。

MindFusion.Diagramming for ASP.NET

ASP.NET下灵活的图表组件

MindFusion.Diagramming for Java

为您图表的自定义以及个性化提供了多种不同选项

MindFusion.Scheduling for WinForms

帮助你管理时间以及重新安排即将到来的预约与事件

MindFusion.Diagramming for WPF

创建任何类型示意图包括流程图、方案图、类层次图、树形图和算法等在内的理想的图形工具。

MindFusion.WinForms Pack

专业的多功能Winforms图表控件套包

MindFusion.WPF Pack

集合了图表控件、日程控件以及报表控件,用于创建所有类型的流程图、方案、图形、表格、图表、日程、调度、商业报表、计量表等

MindFusion ASP.NET Pack

为程序员构建图表、流程图、日程安排、图表等等提供一系列理想的工具集

MindFusion.Silverlight Pack

帮助你快速开发图表、日历、表格和报表

MindFusion.Scheduling Pack

提供一整套完备的功能用于创建日程表、时间、资源表和调度表

MindFusion.Reporting for WinForms

原生的Windows Forms编程组件,可为任何.NET应用程序提供专业的报表功能

MindFusion.Reporting for WPF

智能编程型报表组件,具有强大的可视化和编辑关系数据的功能

MindFusion.Reporting for Silverlight

为你快速创建及定制报表

MindFusion.Scheduling for ASP.NET

为WebForms应用程序提供一个完整的功能集,用于显示日程表、时间表、日程安排、资源视图等

MindFusion.Scheduling for WPF

快速为你的WPF应用程序添加一个完整的日程表和时间管理功能集

MindFusion.Scheduling for Silverlight

具有时尚外观且易于使用的时间管理组件

MindFusion.Charting for WPF

轻松为你的WPF应用程序添加漂亮的仪表板

MindFusion.Charting for WinForms

WinForms应用程序完美的图表解决方案

MindFusion Diagramming Pack

支持iOS、Android等10多个平台的强大图表库

MindFusion.Charting for Silverlight

为您的Silverlight应用程序创建漂亮的图表

MindFusion.Charting for WebForms

适用于任何ASP.NET应用程序的完美图表控件

MindFusion.Charting for Android

用简单易懂的图表呈现您的数据,可以在任何Android设备上运行,让您的应用脱颖而出!

MindFusion.Scheduling for Java

专为智能Java应用程序打造的智能日历

MindFusion.Scheduling for Xamarin

Android和iOS应用程序项目管理功能、风格和性能的完美组合

MindFusion.Scheduling for .NET CF

为使用Microsoft .NET Compact Framework的应用程序设计的计划和时间安排组件

MindFusion.Mapping for WinForms

拥有创建、定制和显示地图的全套功能

MindFusion.Mapping for WPF

快速且容易地为Wpf应用程序添加一个漂亮的地图

MindFusion Pack for Java Swing

MindFusion Pack for Java Swing是一款有效的JAVA工具。

MindFusion Xamarin Pack

MindFusion Xamarin Pack是适用于独立于平台的应用程序的一组独特控件。使用MindFusion专业控件加速您的Xamarin应用程序的开发,为您提供需要数月才能开发的即用型功能。

MindFusion Diagram for UWP

MindFusion Diagram for UWP是一款WINRT的图表库,使您的移动应用程序在Windows shop中脱颖而出,其中包含易于构建和自定义的图表

MindFusion Wpf Gantt Chart

Wpf Gantt Chart.MindFusion包含在MindFusion.Scheduling for WPF里,MindFusion.Scheduling for WPF是一款添加日程表、时间表和资源视图的适用于WPF的调度工具。

MindFusion iOS Diagram

MindFusion iOS Diagram是一个原生的Swift组件,它提供了一个强大的功能集,可以让您呈现任何类型的流程图,组织结构图,类图,层次结构,树和图。

MindFusion Android Diagram

MindFusion Android Diagram可以为任何类型的Android设备构建图表。

MindFusion Wpf Gantt Chart & Gauge

MindFusion Wpf Gantt Chart & Gauge是一款结合了2D和3D图表、仪表和高级实时图表控制的WPF组件。

MindFusion ASP.NET Scheduler

一个非常易于使用和自定义的ASP.NET调度组件。

MindFusion Java Swing Chart

MindFusion Java Swing Chart不仅是可用于渲染图表的普通编程工具,还是可组合排列图表、仪表和UI元素、创建高级数据可视化解决方案的智能组件。

MindFusion ASP.NET Chart

MindFusion ASP.NET Chart包含在MindFusion.Charting for WebForms里,MindFusion.Charting for WebForms是一款适用于任何ASP.NET应用程序的完美图表控件。

MindFusion JavaScript Chart

MindFusion JavaScript Chart结合了2D和3D图表、金融图表、仪表和仪表板,提供了优秀的API 、丰富的事件集、无限数量和类型的数据系列以及在JavaScript和HTML中创建完美数据可视化所需的一切。

MindFusion Xamarin Diagram

MindFusion Xamarin Diagram是一款Xamarin.Forms流程图控件。

MindFusion Wpf Virtual Keyboard

MindFusion Wpf Virtual Keyboard是一款外观和感觉像移动应用程序的WPF应用程序,可提供与触摸屏应用程序相同的可访问性。

MindFusion Xamarin Chart

MindFusion Xamarin Chart是用于仪表板、2D和3D图表的Xamarin Forms组件,有丰富的图表类型集、多个数据选项和样式设置。

MindFusion WinForms Virtual Keyboard

MindFusion WinForms Virtual Keyboard是适用于每个WinForms应用程序的全功能屏幕键盘,内置键盘布局、主题和广泛的API文档。

MindFusion Java Swing Virtual Keyboard

MindFusion Java Swing Virtual Keyboard是用于Java Swing软件的屏幕键盘。

MindFusion Wpf Spreadsheet

MindFusion Wpf Spreadsheet是WPF的电子表格,可在应用程序中实现熟悉的类似Excel的功能。

MindFusion WinForms Spreadsheet

MindFusion WinForms Spreadsheet是MindFusion WinForms电子表格控件,是一个功能强大的.net电子表格组件,具有编辑、样式化和格式化大量数据的强大功能。

MindFusion Java Swing Spreadsheet

MindFusion Java Swing Spreadsheet是适用于Java的电子表格。能快速创建任何类型的电子表格。添加各种图表、数据功能并根据需要设置样式,结果可以导出为不同的格式。

在线客服 在线QQ 电话咨询
400-700-1020
反馈
在线客服系统
live chat