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

}

},

相关推荐
xiaofeichaichai4 小时前
Webpack
前端·webpack·node.js
问心无愧05134 小时前
ctf show web入门111
android·前端·笔记
唐某人丶4 小时前
模型越来越强,我们还需要 Agent 工程吗?—— 从价值重估到 Harness 实践
前端·agent·ai编程
智码看视界5 小时前
现代Web开发基础:全栈工程师的起航点
前端·后端·c5全栈
JS菌5 小时前
手写一个 AI Agent 全栈项目:从沙箱执行到子智能体的完整实现
前端·人工智能·后端
excel6 小时前
HLS TS 文件损坏的元凶:Git 提交与拉取
前端
Aphasia3116 小时前
https连接传输流程
前端·面试
徐小夕6 小时前
万字长文!千万级文档 RAG 知识库系统落地实践
前端·算法·github
threelab6 小时前
Three.js 物理模拟着色器 | 三维可视化 / AI 提示词
开发语言·前端·javascript·人工智能·3d·着色器