在winform中使用chromiumWebBrowser显示Echarts图表

首先,在项目引用中添加CefSharp,这个是谷歌的控件。

然后在form中添加一个chromiumWebBrower控件

在form初始化时,执行浏览器组件的初始化

//浏览器组件只初始化一次,所以放在主界面

CefSettings settings = new CefSettings(); //参数设置

settings.CefCommandLineArgs.Add("save-image-download", "true"); // 确保开启图片下载支持

Cef.Initialize(settings);

执行控件的初始化

try

{

//加载Html

this.webBrowser1.Load(Environment.CurrentDirectory + "\\Web\\WeldChart.html");

//暴漏 C#方法给JavaScript调用

this.webBrowser1.JavascriptObjectRepository.ResolveObject += (sender, e) => {

var repo = e.ObjectRepository;

if (e.ObjectName == "JavaScriptCallFormClass")

{

repo.NameConverter = null;

repo.NameConverter = new CamelCaseJavascriptNameConverter();

repo.Register("JavaScriptCallFormClass", new JavaScriptCallFormClass(), isAsync: true, BindingOptions.DefaultBinder);

}

};

//禁用右键菜单

this.webBrowser1.MenuHandler = new DisableContextMenuHandler();

//在webBrowser完全初始化完成后 通知启动线程

this.webBrowser1.FrameLoadEnd += (sender, e) => {

if (e.Frame.IsMain)

{

browserInitializedEvent.Set();

bool isEnableBanner = false;

}

};

}

catch (Exception ex)

{

MessageBox.Show("页面初始化异常,请联系管理员: " + ex.Message);

}

对控件要显示的曲线数据进行赋值

// 将列表转换为 JSON 格式

string xValueJson = JsonConvert.SerializeObject(xValue);

string seatNumJson = JsonConvert.SerializeObject(seamNum);

string currentJson = JsonConvert.SerializeObject(current);

string voltageJson = JsonConvert.SerializeObject(voltage);

string speedWireJson = JsonConvert.SerializeObject(speedWire);

string airFlowJson = JsonConvert.SerializeObject(airFlow);

// 调用 JavaScript 的 updateHourProductionChart 函数并传递数据

webBrowser1.ExecuteScriptAsync($"updateWeldChart({xValueJson},{seatNumJson},{currentJson},{voltageJson},{speedWireJson},{airFlowJson})");

Web\\WeldChart.html里面就是Echarts的代码

<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta charset="utf-8" />

<title>小时产量平滑折线图</title>

<script src="../ECharts.Js/echarts.min.js"></script>

</head>

<body>

<div id="main" style="width:100%; height:100vh;"></div>

<script>

var chartDom = document.getElementById('main');

var weldChart = echarts.init(chartDom);

var option;

const colors = '#FF3333', '#91CC75', '#33ffec', '#ff33da', '#2E2676';

option = {

tooltip: {

trigger: 'axis',

position: function (pt) {

return pt\[0, '10%'];

}

},

相关推荐
用户0595401744612 分钟前
LangChain Memory 测试踩坑实录:用 pytest 自动化回归对话记忆,我折腾了整整一个周末
前端·css
kyriewen29 分钟前
Claude Code后天起默认Auto模式了——我第一时间改了这6个设置
前端·ai编程·claude
码哥DFS1 小时前
构造函数、实例对象、对象原型 ----三者关系
开发语言·javascript·原型模式
风骏时光牛马1 小时前
智能赋能型AI办公一体化系统架构
前端
满栀5851 小时前
vue动态路由效果
前端·javascript·vue.js·前端框架·vue
土豆~2 小时前
文件名没后缀就打不开:前端文件预览的内容嗅探改造
前端·状态模式
Euato_Key2 小时前
全栈视野学习Cookie——理解 Cookie 的本质
前端
前端开发呀2 小时前
我的 AI 终端配置清单
前端
敲代码的玉米C3 小时前
测试一直在写你的真实数据根
前端·人工智能·架构