Visifire图表控件的使用「建议收藏」
大家好,又见面了,我是你们的朋友全栈君。
1.在实际项目开展中,往往会牵扯到需要绘制图表的情况。而Visifire是一个比较美观大方的第三方图表控件,本文会讲 述如何初步使用Visifire控件。 首先我们需要从Visifire的官方网站下载:http://www.visifire.com/,新建一个项目,引入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(2010,2,15,7,11,03), new DateTime(2010,2,15,7,12,03), new DateTime(2010,2,15,7,13,03), new DateTime(2010,2,15,7,14,03), new DateTime(2010,2,15,7,15,03), new DateTime(2010,2,15,7,16,03), new DateTime(2010,2,15,7,17,03), new DateTime(2010,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过程中,如果有什么需要修改的地方,直接在后台创建图表的时候,修改相应的 类就可以了。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/162786.html原文链接:https://javaforall.cn
相关文章
- shellcode免杀「建议收藏」
- Linux下Jboss安装使用+Jboss部署脚本「建议收藏」
- Pycharm IDE的配置与基本使用「建议收藏」
- 使用pycharm连接MySQL数据库的方法「建议收藏」
- 树莓派命令连接wifi_使用命令行设置树莓派的wifi网络「建议收藏」
- FindWindowEx使用方法「建议收藏」
- DLL注入之使用SetWindowsHookEx注入「建议收藏」
- 关于abiFilters的使用「建议收藏」
- 【Qt】Qt的线程(两种QThread类的详细使用方式)「建议收藏」
- Android屏幕适配AndroidAutoSize的使用「建议收藏」
- 使用matplotlib绘制折线图,柱状图,柱线混合图「建议收藏」
- kafka 集群运维和使用「建议收藏」
- plc的移位指令C语言实现,移位指令做流水灯-PLC中使用移位指令是如何实现移位动作的-电气资讯 – 电工屋…「建议收藏」
- Repeater使用方法—基础数据绑定+多级嵌套「建议收藏」
- puppet使用详解「建议收藏」
- CCriticalSection类的使用「建议收藏」
- RAPIDxml的使用「建议收藏」
- ValueError: too many values to unpack (expected 4)错误,小波变换函数 wavedec2 使用时提示的「建议收藏」
- 使用自己的数据集训练GoogLenet InceptionNet V1 V2 V3模型(TensorFlow)「建议收藏」
- Drone2Map:如何使用带有POS信息的无人机数据生成三维模型「建议收藏」
- ubuntu安装vscode并配置python环境(使用anaconda)「建议收藏」
- Android Toast的几种使用方式「建议收藏」
- 使用std–fstream处理文件「建议收藏」
- openssl生成证书linux,Linux下使用openssl生成证书「建议收藏」
- java 字符串数组 下标_运行时错误9:使用字符串数组时,下标超出范围「建议收藏」
- kettle工具的作用和使用「建议收藏」
- vue和jQuery一起使用「建议收藏」
- LD_DEBUG使用「建议收藏」
- tkMapper的andLike的使用「建议收藏」
- BloomFilter怎么用?使用布隆过滤器来判断key是否存在?「建议收藏」
- C# 使用throw;throw ex;和 throw new Exception();抛异常区别与建议
- MySQL索引不宜贪多,建议慎重使用(mysql 不建议建索引)
- php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)