【WPF】 在WebView2使用echart顯示數據

文章目錄

  • 前言
  • 一、NuGet安裝WebView2
  • 二、代碼部分
    • 1.xaml中引入webview2
    • 2.編寫html
    • 3.在WebView2中加載html
    • 4.調用js方法為Echarts賦值
  • 總結


前言

為了實現數據的三維效果,所以需要使用Echarts,但如何在WPF中使用Echarts呢?


一、NuGet安裝WebView2

在這里插入圖片描述

二、代碼部分

1.xaml中引入webview2

 xmlns:wv2="clr-namespace:Microsoft.Web.WebView2.Wpf;assembly=Microsoft.Web.WebView2.Wpf"
<wv2:WebView2 Name = "webview2"/>

2.編寫html

寫一個html文件(請注意寫你自己Echarts.js的路徑),放到項目中,html內容如下:

<!DOCTYPE html>
<html><head><title>Simple Surface</title><meta charset="utf-8"><script src="source/echarts.min.js"></script><script src="source/echarts-gl.min.js"></script>
</head><body><div id="main" style="width: 100%;height:300px;"></div>
</body><script type="text/javascript">var chartDom = document.getElementById('main');var myChart = echarts.init(chartDom);var data3d = [];var option;option = {tooltip: {},backgroundColor: '#fff',visualMap: {show: true,dimension: 2,min: -300,max: 100,inRange: {color: ['#313695', '#4575b4', '#74add1', '#abd9e9', '#e0f3f8', '#ffffbf', '#fee090', '#fdae61', '#f46d43', '#d73027', '#a50026']}},xAxis3D: {name: '縱向',type: 'value'},yAxis3D: {name: '橫向',type: 'value'},zAxis3D: {name: '高程',type: 'value',min: -20,max: 30},grid3D: {viewControl: {projection: 'orthographic'}},series: [{name: "路面高程",type: 'surface',data: data3d,}]};option && myChart.setOption(option);
</script>
<script type="text/javascript">function setChartSize(width, height){console.log(width + "|"+height);document.getElementById('main').style.width = width + 'px';document.getElementById('main').style.height = height + 'px';myChart.resize();}function set3dData(data, min,max){console.log("設置數據中");data3d = data;option.visualMap.min = min;option.visualMap.max = max;myChart.resize();Draw3d();}function Draw3d(){option.series[0].data = data3d;myChart.setOption(option);}
</script>
</html>

3.在WebView2中加載html

在代碼中加入如下方法,使webview2加載我們寫好的html。

 //初始化標識bool webview2_initialized = false;private async void InitializeWebView(){// 確保WebView2控件已經初始化await webview2.EnsureCoreWebView2Async(null);// 注冊DOMContentLoaded事件,確保頁面加載完成后調用JavaScript方法webview2.CoreWebView2.DOMContentLoaded += CoreWebView2_DOMContentLoaded;// 加載HTML內容var htmlFilePath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "你的路徑", "index.html");this.webview2.CoreWebView2.Navigate(htmlFilePath);}private void CoreWebView2_DOMContentLoaded(object sender, CoreWebView2DOMContentLoadedEventArgs e){var width = this.webview2.ActualWidth - 20;var height = this.webview2.ActualHeight - 20;//webview2加載完成。webview2_initialized = true;//調用js中的setChartSize方法webview2.CoreWebView2.ExecuteScriptAsync("setChartSize(" + width + "," + height + ")");}

4.調用js方法為Echarts賦值

 //檢測webview2是否初始化完成。while (!webview2_initialized){//程序等待await Task.Delay(100);}//調用js方法為echart方法賦值。this.Dispatcher.Invoke(() =>{string jsString = "set3dData({0},{1},{2});";string[] data =  你的方法;jsString = String.Format(jsString, data[0], data[1], data[2]);if (webview2.CoreWebView2 != null) {//調用js代碼webview2.CoreWebView2.ExecuteScriptAsync(jsString);}});

總結

完成上述操作后,就可以看到如下效果了。至此我們完成了WPF使用的Echarts的操作。感謝觀看,下集再見。
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/77507.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/77507.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/77507.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2025年3月 Python編程等級考試 2級真題試卷

2025年3月青少年軟件編程Python等級考試&#xff08;二級&#xff09;真題試卷 題目總數&#xff1a;37 總分數&#xff1a;100 選擇題 第 1 題 單選題 老師要求大家記住四大名著的作者&#xff0c;小明機智地想到了可以用字典進行記錄&#xff0c;以下哪個選項的字典…

6. 話題通信 ---- 使用自定義msg,發布方和訂閱方cpp,python文件編寫

1)在功能包下新建msg目錄&#xff0c;在msg目錄下新建Person.msg,在Person.msg文件寫入&#xff1a; string name uint16 age float64 height 2)修改配置文件 2.1) 功能包下package.xml文件修改 <build_depend>message_generation</build_depend><exec_depend…

多線程使用——線程安全、線程同步

一、線程安全 &#xff08;一&#xff09;什么是線程安全問題 多個線程&#xff0c;同時操作同一個共享資源的時候&#xff0c;可能會出現業務安全的問題。 &#xff08;二&#xff09;用程序摹擬線程安全問題 二、線程同步 &#xff08;一&#xff09;同步思想概述 解決線…

4. 話題通信 ---- 發布方和訂閱方cpp文件編寫

本節對應趙虛左ROS書籍的2.1.2 以10hz,發布消息和消息的訂閱 1) 在功能包的src文件夾下&#xff0c;新建cpp文件&#xff0c;并且寫入 #include "ros/ros.h" #include "std_msgs/String.h" int main(int argc, char *argv[]) {setlocale(LC_ALL,"&…

有哪些哲學流派適合創業二

好的&#xff0c;讓我們更深入地探討如何將?哲學與數學?深度融合&#xff0c;構建一套可落地的創業操作系統。以下從?認知框架、決策引擎、執行算法?三個維度展開&#xff0c;包含具體工具和黑箱拆解&#xff1a; ?一、認知框架&#xff1a;用哲學重構商業本質? 1. ?本體…

【后端】【python】Python 爬蟲常用的框架解析

一、總結 Python 爬蟲常用的框架主要分為 三類&#xff1a; 輕量級請求庫&#xff1a;如 requests、httpx&#xff0c;用于快速發請求。解析與處理庫&#xff1a;如 BeautifulSoup、lxml、pyquery。爬蟲框架系統&#xff1a;如 Scrapy、pyspider、Selenium、Playwright 等&am…

力扣-hot100(無重復字符的最長子串)

3. 無重復字符的最長子串 中等 給定一個字符串 s &#xff0c;請你找出其中不含有重復字符的 最長 子串 的長度。 示例 1: 輸入: s "abcabcbb" 輸出: 3 解釋: 因為無重復字符的最長子串是 "abc"&#xff0c;所以其長度為 3。暴力直觀解法一&#xff1…

六邊形棋盤格(Hexagonal Grids)的坐標

1. 二位坐標轉六邊形棋盤的方式 1-1這是“波動式”的 這種就是把【方格子坐標】“左右各錯開半個格子”做到的 具體來說有如下幾種情況 具體到廟算平臺上&#xff0c;是很巧妙的用一個4位整數&#xff0c;前兩位為x、后兩位為y來進行表示 附上計算距離的代碼 def get_hex_di…

C++之虛函數 Virtual Function

1. 普通虛函數&#xff08;Virtual Function&#xff09; 定義&#xff1a;基類中用 virtual 聲明&#xff0c;允許派生類 覆蓋&#xff08;Override&#xff09;。特點&#xff1a; 基類可提供默認實現。派生類可選擇性覆蓋&#xff08;若不覆蓋&#xff0c;則調用基類版本&a…

基于尚硅谷FreeRTOS視頻筆記——15—系統配制文件說明與數據規范

目錄 配置函數 INCLUDE函數 config函數 數據類型 命名規范 函數與宏 配置函數 官網上可以查找 最核心的就是 config和INCLUDE INCLUDE函數 這些就是裁剪的函數 它們使用一個ifndef。如果定義了&#xff0c;就如果定義了這個宏定義&#xff0c;那么代碼就生效。 通過ifn…

HAL庫配置RS485+DMA+空閑中斷收發數據

前言&#xff1a; &#xff08;1&#xff09;DMA是單片機集成在芯片內部的一個數據搬運工&#xff0c;它可以代替單片機對數據進行傳輸、存儲&#xff0c;節約CPU資源。一般應用場景&#xff0c;ADC多通道采集&#xff0c;串口收發&#xff08;頻繁進入接收中斷&#xff09;&a…

從零開始解剖Spring Boot啟動流程:一個Java小白的奇幻冒險之旅

大家好呀&#xff01;今天我們要一起探索一個神奇的話題——Spring Boot的啟動流程。我知道很多小伙伴一聽到"啟動流程"四個字就開始頭疼&#xff0c;別擔心&#xff01;我會用最通俗易懂的方式&#xff0c;帶你從main()方法開始&#xff0c;一步步揭開Spring Boot的…

下載HBuilder X,使用uniapp編寫微信小程序

到官網下載HBuilder X 地址&#xff1a;HBuilderX-高效極客技巧 下載完成后解壓 打開解壓后的文件夾找到HBuilderX.exe 打開顯示更多&#xff0c;發送到桌面快捷方式 到桌面上啟動HBuilderX.exe啟動應用 在工具點擊插件安裝 選擇安裝Vue3編譯器 點擊新建創建Vue3項目 編寫項目…

詳解與HTTP服務器相關操作

HTTP 服務器是一種遵循超文本傳輸協議&#xff08;HTTP&#xff09;的服務器&#xff0c;用于在網絡上傳輸和處理網頁及其他相關資源。以下是關于它的詳細介紹&#xff1a; 工作原理 HTTP 服務器監聽指定端口&#xff08;通常是 80 端口用于 HTTP&#xff0c;443 端口用于 HT…

2. ubuntu20.04 和VS Code實現 ros的輸出 (C++,Python)

本節對應趙虛左ROS書籍的1.4.2 1)創建工作空間 mkdir -p catkin_ws/src cd catkin_ws catkin_make 2) 終端進入VS Code code . 3) vscoe 的基本配置 3.1&#xff09;修改.vscode/tasks.json ,修改內容如下&#xff1a; { // 有關 tasks.json 格式的文檔&#xff0c;請參見…

SAP系統中MD01與MD02區別

知識點普及&#xff0d;MD01與MD02區別 1、從日常業務中&#xff0c;我們都容易知道MD01是運行全部物料&#xff0c;MD02是運行單個物料 2、在做配置測試中&#xff0c;也出現過MD02可以跑出物料&#xff0c;但是MD01跑不出的情況。 3、MD01與MD02的差異: 3.1、只要在物料主數…

快速迭代收縮-閾值算法(FISTA)

文章目錄 1. 數學與優化基礎2. FISTA 算法的原理、推導與機制3. Matlab 實現4. FISTA 在圖像處理與壓縮感知中的應用4.1. 基于小波稀疏先驗的圖像去噪4.2 壓縮感知圖像重建 1. 數學與優化基礎 在許多信號處理與機器學習問題中&#xff0c;我們希望獲得稀疏解&#xff0c;即解向…

微服務之間打通用戶上下文

微服務之間打通用戶上下文 打通上下文步驟需求&#xff1a;1、gateway網關登錄攔截器&#xff1a;【LoginFilter】解釋&#xff1a;代碼 2、SpringMVC全局處理&#xff1a;【GlobalConfig】解釋&#xff1a;代碼&#xff1a; 3、自定義登錄攔截器&#xff1a;【LoginIntercepto…

Hutool之DateUtil:讓Java日期處理變得更加簡單

前言 在Java開發中&#xff0c;日期和時間的處理是一個常見問題。為了簡化這個過程&#xff0c;許多開發者會使用第三方工具包&#xff0c;如Hutool。Hutool是一個Java工具包&#xff0c;提供了許多實用的功能&#xff0c;其中之一就是日期處理。日期時間工具類是Hutool的核心包…

ES中常用的Query和查詢作用,以及SpringBoot使用實例

ES中常用的Query和查詢作用&#xff0c;以及 SpringBoot 使用實例 文章目錄 ES中常用的Query和查詢作用&#xff0c;以及 SpringBoot 使用實例MatchAllQueryTermQueryBoolQueryRangeQueryMatchQueryMultiMatchQueryTermsQueryPrefixQueryWildcardQueryRegexpQueryFuzzyQueryDis…