失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Visifire图表控件的使用

Visifire图表控件的使用

时间:2018-08-25 10:34:27

相关推荐

Visifire图表控件的使用

1.在实际项目开展中,往往会牵扯到需要绘制图表的情况。而Visifire是一个比较美观大方的第三方图表控件,本文会讲

述如何初步使用Visifire控件。

首先我们需要从Visifire的官方网站下载:/,新建一个项目,引入SLVisifire.Charts.dll。在

MainPage.xaml.cs代码中添加代码:using Visifire.Charts;

准备工作做好了,此时我在这里直接编写了一个函数如下:

///

/// 创建一个图表

///

/// 表名字

/// 时间段的集合

/// 对应时间段集合的值

/// 本表在主Grid里面的ROW值

/// 本表在主Grid里面的column值

/// Y轴的后缀

/// 时间段间隔

/// 图表两点之间的间隔

/// 图表的X轴坐标按什么来分类,如时分秒

public void CreateChart(string tableName, List updateTime,

List value, int row, int column, string rihgtStr, TimeSpan

tspan, int chartInterval, IntervalTypes intervaltype)

{

// 创建一个图标

Chart chart = new Chart();

// 设置图标的宽度和高度

chart.Width = 500;

chart.Height = 400;

chart.ToolBarEnabled = true;

// 设置图标的属性

chart.ScrollingEnabled = false;

chart.View3D = true;

// 创建一个标题的对象

Title title = new Title();

// 设置标题的名称

title.Text = tableName;

title.Padding = new Thickness(0, 10, 5, 0);

// 向图标添加标题

chart.Titles.Add(title);

// 初始化一个新的Axis

Axis xAxis = new Axis();

// 设置axis的属性

//图表的X轴坐标按什么来分类,如时分秒

xAxis.IntervalType = intervaltype;

//图表中的X轴坐标间隔如2,3,20等,单位为xAxis.IntervalType设置的时分

秒。

xAxis.Interval = chartInterval;

//设置X轴的时间显示格式为7-10 11:20

xAxis.ValueFormatString = “hh:mm:ss”;

//给图标添加Axis

chart.AxesX.Add(xAxis);

Axis yAxis = new Axis();

//设置图标中Y轴的最小值永远为0

yAxis.AxisMinimum = 0;

//设置图表中Y轴的后缀

yAxis.Suffix = rihgtStr;

chart.AxesY.Add(yAxis);

for (Int32 j = 0; j < 1; j++)

{

// 创建一个新的数据线。

DataSeries dataSeries = new DataSeries();

// 设置数据线的格式。

dataSeries.RenderAs = RenderAs.Line;

dataSeries.XValueType = ChartValueTypes.DateTime;

// 设置数据点

DataPoint dataPoint;

for (int i = 0; i < updateTime.Count; i++)

{

// 创建一个数据点的实例。

dataPoint = new DataPoint();

// 设置X轴点

dataPoint.XValue = updateTime[i];

//设置Y轴点

dataPoint.YValue = double.Parse(value[i]);

通过此函数我们可以很方便的创建了一个Visifire图表,其创建的步骤那些我在这里不细说,大家直接看源码上的注释

就可以了。因为我使用的Visifire是免费的版本,所有会有水印,在使用的过程中可以创建一个白色背景的StackPanel

来遮盖住水印的位置。在这个函数执行的时候,还为每个DataPoint点加载了一个点击事件,处理当这些点被点击之后

触发的事件(在事件里面获取DataPoint的X轴,Y轴等,以便进行相关操作),其源码如下:

dataPoint.MarkerSize = 8;

dataPoint.Tag = tableName.Split(’(’)[0];

//设置数据点颜色

// dataPoint.Color = new SolidColorBrush(Colors.LightGray);

dataPoint.MouseLeftButtonDown += new

MouseButtonEventHandler(dataPoint_MouseLeftButtonDown);

//添加数据点

dataSeries.DataPoints.Add(dataPoint);

}

// 添加数据线到数据序列。

chart.Series.Add(dataSeries);

}

//将生产的图表增加到Grid,然后通过Grid添加到上层Grid.

Grid gr = new Grid();

gr.Children.Add(chart);

Grid.SetRow(gr, row);

Grid.SetColumn(gr, column);

gr.Margin = new Thickness(5);

gr.VerticalAlignment = VerticalAlignment.Top;

gr.HorizontalAlignment = HorizontalAlignment.Left;

//增加一个遮罩层到gr,将visifire的水印遮掉。

StackPanel sp = new StackPanel();

sp.Width = 160;

sp.Height = 18;

sp.Margin = new Thickness(0, 3, 6, 0);

sp.VerticalAlignment = VerticalAlignment.Top;

sp.HorizontalAlignment = HorizontalAlignment.Right;

sp.Background = new SolidColorBrush(Colors.White);

gr.Children.Add(sp);

LayoutRoot.Children.Add(gr);

}

最后我们模拟一个内存使用率的图标,设置了8个时间点的8个内存使用值的初始值。在MainPage.xaml.cs的主函数中

我们编写以下代码:

一个Visifire图表的组成如下图:

void dataPoint_MouseLeftButtonDown(object sender, MouseButtonEventArgs

e)

{

DataPoint dp = sender as DataPoint;

MessageBox.Show(dp.YValue.ToString());

}

public MainPage()

{

InitializeComponent();

//模拟的8个时间点

List DTimeList = new List()

{

new DateTime(,2,15,7,11,03),

new DateTime(,2,15,7,12,03),

new DateTime(,2,15,7,13,03),

new DateTime(,2,15,7,14,03),

new DateTime(,2,15,7,15,03),

new DateTime(,2,15,7,16,03),

new DateTime(,2,15,7,17,03),

new DateTime(,2,15,7,18,03)

};

//模拟的8个内存使用率值

List strList = new List() { “20”, “55”, “40”, “70”,

“57”, “12”, “49”, “60” };

//按照1分钟的间隔来显示X轴坐标之间的数字。每隔20秒为一个单位长度,Y轴值的

后缀为"%"

CreateChart(“内存使用率”, DTimeList, strList, 0, 0, “%”, new

TimeSpan(0,0,20) , 1, IntervalTypes.Minutes);

}

由上图我们可以看出一个Visifire图表由

(Title,ChartGrid,Ticks,PlotArea,TrendLind,ToolTip,AxisLabels,Axis,DataSeries,DataPoint,Legend)组成。每个部分

都是一个类,所以我们在使用Visifire过程中,如果有什么需要修改的地方,直接在后台创建图表的时候,修改相应的

类就可以了。

如果觉得《Visifire图表控件的使用》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。