在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%'];

}

},

相关推荐
To_OC7 小时前
LC 131 分割回文串:刚学回溯时,我连怎么切字符串都想不明白
javascript·算法·leetcode
咩咩啃树皮8 小时前
第40篇:Vue3组件化开发精讲——组件拆分、复用、父子通信、工程化架构
java·前端·架构
阳光是sunny8 小时前
LangGraph中的Reducer是什么
前端·人工智能·后端
触底反弹8 小时前
一文搞懂 Tailwind CSS 弹性布局:从原理到实战
前端·css·html
阳光是sunny9 小时前
从链到图:LangGraph 入门基础全解析
前端·人工智能·后端
To_OC9 小时前
LC 42 接雨水:暴力超时卡半天?前后缀数组一用就通了
javascript·算法·leetcode
小林ixn9 小时前
从 ??= 到 onKeyDown:一个 React 组件的“自我修养”
前端·javascript·react.js
REDcker10 小时前
显示分辨率标准对照详解
前端·网络·分辨率·显示·屏幕
এ慕ོ冬℘゜10 小时前
前端实战:jQuery 多条件联合搜索(标题模糊查询 + 日历时间段筛选)
前端·javascript·jquery
武子康10 小时前
Search Console Platform Properties 扩大 SEO 资产边界:从 Page Ranking 到 Topic Coverage(5 类误读边界 + 3 表数据层设计)
前端·人工智能·后端