WPF中使用Echarts显示图表
2016-09-28 11:30
801 查看
在WPF程序当中,有多种场合使用图表工具,在.net4.0下有MSchart可供选择,但重绘困难,样式单一,而HTML大行其道的今天,有诸多的HTML开源图表可供选择,样式丰富,修改方便,调用简单。本文描述如何在WPF中使用Echarts。
一.下载ECharts
撰文时,ECharts的版本为2.2.7,下载链接如下:https://codeload.github.com/ecomfe/echarts/zip/2.2.7
二.在wpf中准备ECharts的使用环境
Echarts本质上是一个html5的文件,在wpf/winfrom程序中,可以使用webbrowser这个控件来加载本地的html文件。加载过程相对简单,可以参考:http://www.cnblogs.com/MaKui/archive/2011/08/02/2128842.html中第二点的描述,也可以选择使用webkit作为html的载体,下载地址:http://webkitdotnet.sourceforge.net/downloads.php。本文以webbrowser为例。
新建一个wpf工程文件,命名为:“EChartsDemo”,在设计界面添加如下代码:
三.使用ECharts
将下载下来的ECharts文件中的dist文件夹全部拷到Debug文件夹下,然后新建一个html文件,代码如下:
在MainWindow的构造函数中定义web需要加载的文件,代码如下:
解决这个问题,需要在html中插入如下的注释代码:
五.交互
完成显示步骤后,我们可以通过代码来对图表进行刷新、更改、清除等一系列操作。也可以在图表中触发事件向WPF发出消息。
5.1 C# to js
这一步骤非常简单,只需插入如下代码即可:
4000
即可实现对html的控制,当然在实际应用中需要控制的参数较多,就需要仔细设计操作了。
5.2 js to C#
js由于是托管代码,调用C#需要足够的权限,所以在项目中添加一个新类,代码如下:
Demo下载链接:Demo.rar
抛砖引玉,万望指正。
一.下载ECharts
撰文时,ECharts的版本为2.2.7,下载链接如下:https://codeload.github.com/ecomfe/echarts/zip/2.2.7
二.在wpf中准备ECharts的使用环境
Echarts本质上是一个html5的文件,在wpf/winfrom程序中,可以使用webbrowser这个控件来加载本地的html文件。加载过程相对简单,可以参考:http://www.cnblogs.com/MaKui/archive/2011/08/02/2128842.html中第二点的描述,也可以选择使用webkit作为html的载体,下载地址:http://webkitdotnet.sourceforge.net/downloads.php。本文以webbrowser为例。
新建一个wpf工程文件,命名为:“EChartsDemo”,在设计界面添加如下代码:
<Grid> <WebBrowser Name="Web"> </WebBrowser> </Grid>然后,就可以开始编辑我们需要的表格了,这里就拿官方的给的例子来做测试。
三.使用ECharts
将下载下来的ECharts文件中的dist文件夹全部拷到Debug文件夹下,然后新建一个html文件,代码如下:
<!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> <head> <meta charset="utf-8" /> <title></title> </head> <body> <div id="main" style="width:1900px;height:700px" /> <script src="echarts.js"></script> <script src="echarts-all.js"></script> <script> myChart = echarts.init(document.getElementById('main')); option = { title: { text: '未来一周气温变化', subtext: '纯属虚构' }, tooltip: { trigger: 'axis' }, legend: { data: ['最高气温', '最低气温'] }, toolbox: { show: true, feature: { mark: { show: true }, dataView: { show: true, readOnly: false }, magicType: { show: true, type: ['line', 'bar'] }, restore: { show: true }, saveAsImage: { show: true } } }, calculable: true, xAxis: [ { type: 'category', boundaryGap: false, data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'] } ], yAxis: [ { type: 'value', axisLabel: { formatter: '{value} °C' } } ], series: [ { name: '最高气温', type: 'line', data: [11, 11, 15, 13, 12, 13, 10], markPoint: { data: [ { type: 'max', name: '最大值' }, { type: 'min', name: '最小值' } ] }, markLine: { data: [ { type: 'average', name: '平均值' } ] } }, { name: '最低气温', type: 'line', data: [1, -2, 2, 5, 3, 2, 0], markPoint: { data: [ { name: '周最低', value: -2, xAxis: 1, yAxis: -1.5 } ] }, markLine: { data: [ { type: 'average', name: '平均值' } ] } } ] }; myChart.setOption(option); </script> </body> </html>以上代码来自:http://echarts.baidu.com/echarts2/doc/example/line1.html ,如果觉得默认的主题样式不好看,还可以使用ECharts的主题来进行切换,使用主题的方法如下:下载需要的主题js文件,可以在http://echarts.baidu.com/theme-builder/找到各个主题的下载链接,也允许使用者自行构建,以使用macarons为例,将下载好的macarons.js文件拷贝到dist文件夹下,在html文件中对其进行引用,然后就可以使用ECharts的初始化函数使用这个主题了,代码如下:
<script src="macarons.js"></script> <script> myChart = echarts.init(document.getElementById('main'),'macarons');四.在WebBrowser中加载图表
在MainWindow的构造函数中定义web需要加载的文件,代码如下:
Web.Navigate(new Uri( Directory.GetCurrentDirectory() + "/dist/LineChart.html"));此时调试就可以看到运行效果了,这里会出现一个比较奇怪的提示,
解决这个问题,需要在html中插入如下的注释代码:
<!-- saved from url=(0013)about:internet -->再次运行即可显示在html中编辑的图表
五.交互
完成显示步骤后,我们可以通过代码来对图表进行刷新、更改、清除等一系列操作。也可以在图表中触发事件向WPF发出消息。
5.1 C# to js
这一步骤非常简单,只需插入如下代码即可:
Web.InvokeScript("Type",0);//Type js中的函数名称,0代指传入的参数其中Type是js中需要被使用的函数的名字,0是需要传入的参数,在Demo中借用Type函数控制图表的显示和消失,在界面中添加按钮用以向html发送消息,代码如下:
<Button Name="load" HorizontalAlignment="Left" Content="卸载" Click="Button_Click" /><pre name="code" class="csharp">private void Button_Click(object sender, RoutedEventArgs e) { if (load.Content.ToString() == "加载") { Web.InvokeScript("Type", 1); load.Content = "卸载"; } else { Web.InvokeScript("Type",0); load.Content = "加载"; } }
4000
即可实现对html的控制,当然在实际应用中需要控制的参数较多,就需要仔细设计操作了。
5.2 js to C#
js由于是托管代码,调用C#需要足够的权限,所以在项目中添加一个新类,代码如下:
[PermissionSet(SecurityAction.Demand, Name = "FullTrust")] [System.Runtime.InteropServices.ComVisible(true)]//给予权限并设置可见 public class WebAdapter { public void ShowMsg(string Msg) { Console.WriteLine(Msg); } }js调用方法:
<button onclick="click1()" style="width:100px;height:20px">测试</button> <script> function click1() { window.external.ShowMsg("这是一条信息"); } </script>即可实现js调用C#.
Demo下载链接:Demo.rar
抛砖引玉,万望指正。
相关文章推荐
- echarts初次使用 显示图表
- 解决Echarts使用tab切换时只显示第一个tab中图表,其他tab中图表不显示或显示不全问题
- 如何在Chart FX for WPF 中使用Sketchflow原型显示图表
- 使用echarts显示图表
- React Native使用百度Echarts显示图表
- React Native使用百度Echarts显示图表的示例代码
- 使用Bootstrap tab切换引入echarts图表。第一个tab显示正常,
- 如何使用WPF图表控件Chart FX进行数据转换
- 使用了 httpmodule 水晶报表 ,水晶报表的图表图片无法显示
- 使用数据绑定和 WPF 自定义数据显示
- WPF DataGrid使用 自动显示行号、全选、三级联动、拖拽
- 关于JSP显示Excel图表的JFreeChart使用(参考网络资料)
- 解决在WinForm 或 WPF中使用WebBrowser来显示本地包含javascript的网页时弹出黄色警告的问题。
- WPF中使用流文档灵活地显示内容
- [水晶报表]MVC中使用水晶报表,图表无法显示的问题
- wpf使用多线程来显示进度条
- WPF使用Page创建显示不同控件的程序
- 使用数据绑定和 WPF 自定义数据显示
- JFreechart tips:使用applet来显示图表
- 使用jQuery为数据视图添加图表显示