ECharts图例图标自定义全攻略:从基础符号到SVG路径与动态图片
1. 从一次“不匹配”的视觉需求说起最近在做一个数据大屏项目客户指着图例legend那块区域眉头微皱“这个方块图标和我们整个页面的设计语言不太搭能不能换成我们品牌的那个小箭头或者干脆用我们产品的logo缩略图” 这个需求听起来简单不就是改个图例的图标嘛。但当我真正动手去调整 ECharts 的legend.icon属性时才发现这里面的门道比想象中要多。从简单的字符替换到复杂的 SVG 路径绘制再到动态的图片引用每一种方式都有其特定的应用场景和需要避开的“坑”。ECharts 的图例组件是数据可视化的“地图钥匙”它清晰地告诉观众每一种颜色、每一种线型代表什么数据系列。默认情况下折线图图例是个小横线柱状图是个小矩形散点图是个小圆点。这些默认图标在绝大多数场景下是清晰且高效的。然而当我们的项目需要更强的品牌植入、更独特的视觉风格或者需要图标本身承载更多信息比如状态指示时自定义legend.icon就成了必须掌握的技能。本文将基于我多次实战的经验为你拆解 ECharts 图例图标自定义的几种核心方式并附上那些官方文档可能不会细说的实操细节和避坑指南。2. 基础招式使用预定义符号与字符对于大多数轻度定制需求我们并不需要动用复杂的图形ECharts 内置的符号类型和 Unicode 字符就足以应对。这是最快、最轻量的自定义方式。2.1 利用内置的symbol类型ECharts 的series中每个系列可以有自己的symbol标记图形如‘circle’圆形、‘rect’矩形、‘roundRect’圆角矩形、‘triangle’三角形、‘diamond’菱形、‘pin’针形、‘arrow’箭头等。图例的图标默认会继承对应系列的symbol。但我们可以通过legend.icon直接为图例指定一个不同的内置符号。option { legend: { data: [销量], // 单独为图例设置图标类型 icon: path://M 0 0 L 20 0 L 10 20 Z // 这里也可以直接写 triangle }, series: [{ name: 销量, type: line, data: [5, 20, 36, 10, 10, 20], // 系列本身的标记点符号 symbol: circle }] };关键点legend.icon的优先级高于系列自身的symbol在图例上的表现。这意味着即使你的折线图数据点是圆形symbol: ‘circle’你也可以让图例显示为三角形。这在需要区分“数据点标记”和“图例标识”时非常有用。2.2 使用 Unicode 字符或 Font Icon如果你需要的图标是一个简单的字符比如对号√、叉号×、星号★、箭头↑↓←→或者项目引入了像 Font Awesome 这样的图标字体库那么可以直接将icon属性设置为对应的字符。option { legend: { data: [达成, 未达成, 重点关注], // 使用Unicode字符或图标字体类名 icon: ‘rect‘, // 默认矩形仅作对比 textStyle: { fontFamily: ‘normal‘ // 确保字体支持这些字符 } }, series: [ { name: ‘达成‘, type: ‘bar‘, data: [100] }, { name: ‘未达成‘, type: ‘bar‘, data: [25] }, { name: ‘重点关注‘, type: ‘bar‘, data: [150] } ] }; // 更常见的做法是在formatter中组合 option.legend.formatter function (name) { if (name ‘达成‘) return ‘✓ ‘ name; if (name ‘未达成‘) return ‘✗ ‘ name; if (name ‘重点关注‘) return ‘★ ‘ name; return name; }; // 但注意formatter只改变文本不改变图标。若要改变图标仍需通过icon属性。 // 对于字体图标可以结合富文本样式rich text实现但这通常更适用于tooltip或axisLabel。 // 最直接关联图例图标和字符的方法是为不同系列项分别定义legend.data。 option.legend.data [ { name: ‘达成‘, icon: ‘circle‘ }, // 这里icon不支持直接写字符需用path或image { name: ‘未达成‘, icon: ‘rect‘ }, { name: ‘重点关注‘, icon: ‘triangle‘ } ];注意直接给icon属性赋一个 Unicode 字符如‘✓‘是无效的。icon属性期望的是一个符号类型字符串如‘circle‘、‘path://‘开头的 SVG 路径字符串、或‘image://‘开头的图片地址。字符图标通常通过formatter改变文本部分来实现但这会导致图标和文本样式不一致。若必须让图例的“图形部分”变成字符需要用到下面介绍的‘path://‘方式或者将字符做成图片。实操心得内置符号和字符方案的优势在于零依赖和高性能。它们都是矢量图形缩放不失真且不产生额外的网络请求。适合对性能要求苛刻或离线环境的大屏项目。缺点是样式比较有限无法满足复杂的品牌图形需求。3. 核心利器通过 SVG Path 实现矢量图标当内置符号无法满足设计需求时‘path://‘是功能最强大、也最灵活的自定义方式。它允许你使用 SVG 路径数据来定义任意形状的矢量图标。3.1 SVG Path 数据格式简介SVG 路径数据是一系列命令和坐标组成的字符串。常用命令有M x y移动画笔到坐标 (x, y)Move to。L x y画一条直线到坐标 (x, y)Line to。H x水平画线到 x 坐标。V y垂直画线到 y 坐标。C x1 y1, x2 y2, x y三次贝塞尔曲线。Z闭合路径。在 ECharts 中我们需要将完整的 SVG 路径字符串前面加上‘path://‘前缀赋值给icon属性。坐标系的原点 (0,0) 通常在图标的左上角。3.2 实战绘制一个自定义的箭头图标假设我们需要一个向右的实心箭头作为图例。我们可以先在一个 SVG 编辑工具如 Figma、Adobe Illustrator甚至在线工具如 https://yqnn.github.io/svg-path-editor/中绘制出箭头然后复制其d属性值。一个简单的向右箭头路径可能如下所示M 0 4 L 8 4 L 8 0 L 16 8 L 8 16 L 8 12 L 0 12 Z这个路径的解读M 0 4移动到点(0,4)。L 8 4画线到(8,4)形成箭头左部的横杠。L 8 0画线到(8,0)开始箭头头部。L 16 8画线到(16,8)形成箭头尖。L 8 16画线到(8,16)完成箭头头部。L 8 12画线到(8,12)。L 0 12画线到(0,12)形成箭头右部的横杠。Z闭合路径连接(0,12)回(0,4)。应用到 ECharts 中option { legend: { data: [‘趋势线‘], icon: ‘path://M 0 4 L 8 4 L 8 0 L 16 8 L 8 16 L 8 12 L 0 12 Z‘, itemWidth: 20, // 需要调整图例项的宽度以适应自定义图标大小 itemHeight: 16 }, xAxis: { type: ‘category‘, data: [‘Mon‘, ‘Tue‘, ‘Wed‘] }, yAxis: { type: ‘value‘ }, series: [{ name: ‘趋势线‘, type: ‘line‘, data: [150, 230, 224] }] };3.3 路径数据的优化与常见问题直接从设计软件导出的 SVG 路径可能非常冗长包含大量绝对坐标和冗余命令。对于 ECharts 图例这种小图标可以进行适当优化简化路径使用工具如 SVGOMG压缩路径数据减少点数。规范化原点确保路径的视觉中心大致在绘制区域内避免图标偏移。可以通过调整M命令的初始坐标或整体平移路径来实现。控制大小SVG 路径本身没有固定尺寸其显示大小由legend.itemWidth和legend.itemHeight控制。你需要根据路径的原始 bounding box包围盒来调整这两个值直到图标显示比例合适。踩坑记录我曾遇到一个需求使用一个复杂的品牌 Logo 路径。直接粘贴后图标显示巨大甚至超出图例区域。原因是该 Logo 的 SVG 路径坐标值范围是 0-800而 ECharts 默认的itemWidth是 25。解决方案不是去改路径的每一个坐标那太累了而是调整itemWidth和itemHeight。我将其增加到 80 和 40图标就正常显示了。记住itemWidth/Height是图例项**整个色块图标文本间隔**的宽度/高度图标会在其中居中缩放适应。4. 应对复杂图形引用图片作为图标对于极度复杂、或本身就是位图格式的图标如产品小图、徽章使用‘image://‘引用图片 URL 是最直接的方法。4.1 在线图片与 Base64 内联option { legend: { data: [‘苹果‘, ‘香蕉‘], // 方式1引用在线图片 // icon: ‘image://https://example.com/apple.png‘, // 方式2使用Base64编码推荐用于小图标避免额外请求 icon: ‘image://data:image/svgxml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTggMEMzLjU4IDAgMCAzLjU4IDAgOFMzLjU4IDE2IDggMTZTMTYgMTIuNDIgMTYgOFMxMi40MiAwIDggMFoiIGZpbGw9IiNGRjBCMkIiLz4KPC9zdmc‘ }, series: [ { name: ‘苹果‘, type: ‘scatter‘, data: [[10, 20]] }, { name: ‘香蕉‘, type: ‘scatter‘, data: [[20, 10]] } ] };4.2 动态生成图片的场景在一些后台系统图例图标可能需要根据实时数据状态变化。例如设备状态图例正常是绿色圆形异常是红色感叹号。我们可以用 Canvas 动态生成图片转换为 Data URL。function createStatusIcon(color, text) { const canvas document.createElement(‘canvas‘); canvas.width 16; canvas.height 16; const ctx canvas.getContext(‘2d‘); // 画背景圆 ctx.beginPath(); ctx.arc(8, 8, 7, 0, Math.PI * 2); ctx.fillStyle color; ctx.fill(); // 画文字简单示例 if (text) { ctx.fillStyle ‘white‘; ctx.font ‘bold 10px Arial‘; ctx.textAlign ‘center‘; ctx.textBaseline ‘middle‘; ctx.fillText(text, 8, 8); } return canvas.toDataURL(‘image/png‘); } const option { legend: { data: [ { name: ‘运行正常‘, icon: ‘image://‘ createStatusIcon(‘#52c41a‘, ‘✓‘) }, { name: ‘出现警告‘, icon: ‘image://‘ createStatusIcon(‘#faad14‘, ‘!‘) }, { name: ‘发生故障‘, icon: ‘image://‘ createStatusIcon(‘#f5222d‘, ‘ב) } ] }, series: [...] };重要注意事项图片尺寸与性能图例图标很小务必使用尺寸匹配的图片例如 16x16, 32x32。使用过大的图片会被压缩浪费带宽和内存在移动端可能引起性能问题。缓存与请求‘image://‘后跟的如果是网络 URLECharts 会发起图片请求。对于大量动态图例这可能成为性能瓶颈。强烈建议将小图标转换为 Base64 格式内联或者利用浏览器的缓存机制确保 URL 稳定可缓存。跨域问题如果引用的是第三方站点的图片可能会遇到跨域限制导致图标无法加载。确保图片服务器设置了正确的 CORS 头或者将图片代理到同域下。5. 高级应用与状态联动自定义图标不仅仅是静态替换更能与图表状态进行联动提升交互体验。5.1 区分选中与未选中状态ECharts 图例具有交互性点击可以切换系列显示/隐藏。我们可以为选中inactive状态也设置自定义图标提供更清晰的视觉反馈。option { legend: { data: [‘系列A‘, ‘系列B‘], selectedMode: true, // 开启可选中 inactiveColor: ‘#ccc‘, // 未选中项的颜色影响线条/柱条也影响图标填充色 // 通过 formatter 或 自定义 series.legendIcon 无法直接区分状态。 // 更精细的控制需要监听 legendselectchanged 事件动态更新 option。 }, series: [ { name: ‘系列A‘, type: ‘line‘, data: [220, 182, 191], // 可以在系列级别定义图例图标但无法区分状态 legendIcon: ‘path://M0,0L20,0L10,20Z‘ // 三角形 }, { name: ‘系列B‘, type: ‘line‘, data: [120, 132, 101], legendIcon: ‘circle‘ } ] }; // 实现动态状态图标需要结合事件和setOption myChart.on(‘legendselectchanged‘, function (params) { const newOption { ...option }; // 获取当前配置生产环境应用深拷贝或状态管理 params.selected.forEach((isSelected, seriesName) { const seriesIndex newOption.series.findIndex(s s.name seriesName); if (seriesIndex -1) { // 根据选中状态切换图标路径 newOption.series[seriesIndex].legendIcon isSelected ? ‘path://M0,0L20,0L10,20Z‘ // 选中状态图标 : ‘path://M0,10L20,10M10,0L10,20‘; // 未选中状态图标一个“十”字形 } }); myChart.setOption(newOption); });5.2 与系列图形同步动态变化在一些动态图表中系列本身的符号symbol可能会根据数据点变化例如散点图不同分类的点形状不同。为了保持一致性图例图标也可以动态生成。这通常需要更复杂的逻辑在legend.formatter中返回富文本或者动态构造legend.data数组。例如一个散点图用不同形状表示不同品类const categoryIcons { ‘电子产品‘: ‘path://M8 1L12 5L8 9L4 5Z‘, // 菱形 ‘服装‘: ‘circle‘, ‘食品‘: ‘rect‘ }; const seriesData [...]; // 你的数据每个点有 category 属性 // 提取唯一品类并为其创建图例项 const uniqueCategories [...new Set(seriesData.map(item item.category))]; const legendData uniqueCategories.map(cat ({ name: cat, icon: categoryIcons[cat] || ‘circle‘ })); const option { legend: { data: legendData, formatter: function (name) { // 如果需要更复杂的图文混排可以在这里使用rich text return {icon|◼} ${name}; }, textStyle: { rich: { icon: { // 富文本样式定义但无法直接绑定到icon图形 } } } }, series: [{ type: ‘scatter‘, data: seriesData.map(item ({ value: [item.x, item.y], symbol: categoryIcons[item.category], // ... 其他属性 })) }] };经验之谈动态图标虽然强大但会显著增加代码复杂度和维护成本。在决定使用前务必评估其必要性。对于大多数后台管理系统和数据大屏静态或有限状态选中/未选中的自定义图标已经足够。动态图标更适合高度交互、需要实时反映数据状态的分析类工具。6. 性能优化与最佳实践汇总自定义图标虽好但不能滥用。不当的使用会导致图表渲染性能下降特别是在数据量大的情况下。优先使用矢量路径Path对于自定义形状‘path://‘是首选。它是纯文本描述体积小渲染性能高且无限缩放。尽量避免为了一个简单箭头而去加载一张图片。精简 Path 数据使用工具优化 SVG 路径移除不必要的节点和命令。一个复杂的图标路径可能包含上百个坐标点将其简化到几十个点能有效提升渲染效率。慎用图片图标‘image://‘会触发图片解码和绘制。如果必须使用确保图片尺寸小建议不超过 64x64并考虑使用雪碧图Sprite或 Base64 内联以减少 HTTP 请求。对于重复使用的图标确保浏览器能有效缓存。统一管理图标资源在大型项目中将常用的自定义图标路径或 Base64 字符串定义成常量或配置文件方便统一修改和维护。测试不同场景自定义图标后务必在图表数据更新、图例翻页当图例项过多时、以及响应式 resize 等场景下测试确保图标显示正常没有错位或闪烁。回到开头的那个项目我最终选择了‘path://‘方案将客户提供的品牌箭头 Logo 简化成 SVG 路径。不仅完美契合了设计需求而且因为使用的是矢量图形在大屏4K分辨率下依然边缘锐利性能也无任何损失。自定义 ECharts 图例图标从“能用”到“好用”关键就在于根据具体场景选择最合适、最优雅的那一种方式。

相关新闻

Java调用DLL实战指南:JNI原理、环境配置与避坑详解

Java调用DLL实战指南:JNI原理、环境配置与避坑详解

1. 项目概述:为什么Java需要调用DLL?在Java开发者的日常工作中,我们常常会遇到一个看似矛盾的需求:Java明明以“一次编写,到处运行”的跨平台特性著称,为什么还要去调用特定于Windows平台的DLL(…

2026/8/18 11:52:44 阅读更多 →
电脑开机无反应?从电源到主板的系统化排查指南

电脑开机无反应?从电源到主板的系统化排查指南

1. 问题现象与初步诊断思路“电脑组装好了,开机完全没反应”——这大概是每个DIY玩家最不愿意面对,却又几乎必然会在某个时刻遭遇的“至暗时刻”。你满怀期待地按下机箱上的电源键,结果迎接你的不是风扇的呼啸、主板的炫光,也不是…

2026/8/18 11:13:29 阅读更多 →
Element UI多文件上传on-success只触发一次?深度解析与四种解决方案

Element UI多文件上传on-success只触发一次?深度解析与四种解决方案

1. 问题现场:一个看似“正常”的Bug最近在重构一个后台管理系统时,我又一次遇到了这个经典的“坑”。需求很简单:用户需要在一个表单里上传多个附件,比如合同扫描件、资质证明等。我像往常一样,熟练地拖入 Element UI …

2026/8/18 12:56:26 阅读更多 →

最新新闻

Cortex-M4F FPU性能深度实测:从float/double差异到编译器优化实战

Cortex-M4F FPU性能深度实测:从float/double差异到编译器优化实战

1. 项目缘起:为什么要在MCU上较真FPU性能?最近在调试一个基于英飞凌XMC4700的项目,里面用到了Cortex-M4F内核。项目里有个算法模块,涉及到大量的浮点矩阵运算。一开始代码跑起来总觉得有点“肉”,没达到预期的流畅度。…

2026/8/18 15:55:09 阅读更多 →
英飞凌TLD5098EL评估板硬件初测:从安全上电到恒流验证

英飞凌TLD5098EL评估板硬件初测:从安全上电到恒流验证

1. 从拆箱到上电:一个硬件工程师的“开箱即用”初体验拿到一块新的开发板,尤其是像英飞凌TLD5098EL这种集成了车规级LED驱动器的评估板,很多工程师的第一反应可能不是立刻去翻数据手册,而是先给它通上电,看看板载的LED…

2026/8/18 15:55:09 阅读更多 →
FFXIV国际服中文汉化补丁上手教程:照着做,英文界面半小时变全中文

FFXIV国际服中文汉化补丁上手教程:照着做,英文界面半小时变全中文

FFXIV国际服中文汉化补丁上手教程:照着做,英文界面半小时变全中文 【免费下载链接】FFXIVChnTextPatch 项目地址: https://gitcode.com/gh_mirrors/ff/FFXIVChnTextPatch 如果你也曾在海都市场面前站了半天,只因为看不懂商人对话框里的…

2026/8/18 15:55:09 阅读更多 →
磁盘清理终极指南:Czkawka 14 个工具一次讲透,重复文件、相似图片、视频瘦身一步到位

磁盘清理终极指南:Czkawka 14 个工具一次讲透,重复文件、相似图片、视频瘦身一步到位

磁盘清理终极指南:Czkawka 14 个工具一次讲透,重复文件、相似图片、视频瘦身一步到位 【免费下载链接】czkawka Multi functional app to find duplicates, empty folders, similar images etc. 项目地址: https://gitcode.com/GitHub_Trending/cz/czk…

2026/8/18 15:55:09 阅读更多 →
SAP Gateway Vocabulary-Based Annotations 深入解析,从可翻译文本到 Annotation File 的元数据设计

SAP Gateway Vocabulary-Based Annotations 深入解析,从可翻译文本到 Annotation File 的元数据设计

在一个同时面向中国、德国和美国业务团队的 SAP Fiori 应用里,经常会碰到这样一个很现实的问题。后端 OData Service 的业务数据完全一致,同一个 SalesOrder 实体也没有变化,可中国业务人员登录后希望看到 销售订单,德国业务人员希望看到对应的德语名称,英文环境里则显示 …

2026/8/18 15:55:09 阅读更多 →
LDO与BUCK电源选型实战:从原理到场景的深度解析与避坑指南

LDO与BUCK电源选型实战:从原理到场景的深度解析与避坑指南

1. 从一次电源选型失误说起:为什么不能“无脑”用LDO?去年,我负责一个便携式医疗传感器项目,核心是一个高精度的模拟前端。为了给这颗“娇贵”的芯片供电,我下意识地选择了参数看起来最“干净”的LDO——低噪声、高PSR…

2026/8/18 15:54:08 阅读更多 →

日新闻

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 如果你还停留在"看网课 不停暂停 截图 …

2026/8/18 0:00:57 阅读更多 →
思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 你是不是也经历过这种时刻:设计稿里…

2026/8/18 0:00:58 阅读更多 →
华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, …

2026/8/18 0:00:59 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/18 9:15:35 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/18 9:06:28 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/18 9:04:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/17 18:54:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/17 18:55:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/17 18:55:55 阅读更多 →