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

}

},

相关推荐
Z兽兽2 小时前
React@18+Vite项目配置env文件
前端·react.js·前端框架
SuniaWang2 小时前
《Spring AI + 大模型全栈实战》学习手册系列 · 专题六:《Vue3 前端开发实战:打造企业级 RAG 问答界面》
java·前端·人工智能·spring boot·后端·spring·架构
A_nanda3 小时前
根据AI提示排查vue前端项目
前端·javascript·vue.js
happymaker06263 小时前
web前端学习日记——DAY05(定位、浮动、视频音频播放)
前端·学习·音视频
~无忧花开~4 小时前
React状态管理完全指南
开发语言·前端·javascript·react.js·前端框架
LegendNoTitle4 小时前
计算机三级等级考试 网络技术 选择题考点详细梳理
服务器·前端·经验分享·笔记·php
@大迁世界4 小时前
1.什么是 ReactJS?
前端·javascript·react.js·前端框架·ecmascript
BJ-Giser5 小时前
Cesium 基于EZ-Tree的植被效果
前端·可视化·cesium
王码码20356 小时前
Flutter for OpenHarmony:Flutter 三方库 algoliasearch 毫秒级云端搜索体验(云原生搜索引擎)
android·前端·git·flutter·搜索引擎·云原生·harmonyos
发现一只大呆瓜6 小时前
深入浅出 AST:解密 Vite、Babel编译的底层“黑盒”
前端·面试·vite