惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

U
Unit 42
A
About on SuperTechFans
J
Java Code Geeks
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Stack Overflow Blog
Stack Overflow Blog
Recent Announcements
Recent Announcements
GbyAI
GbyAI
F
Fortinet All Blogs
Blog — PlanetScale
Blog — PlanetScale
MongoDB | Blog
MongoDB | Blog
MyScale Blog
MyScale Blog
aimingoo的专栏
aimingoo的专栏
H
Help Net Security
月光博客
月光博客
博客园 - Franky
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Apple Machine Learning Research
Apple Machine Learning Research
The Cloudflare Blog
WordPress大学
WordPress大学
S
SegmentFault 最新的问题
T
Tailwind CSS Blog
Jina AI
Jina AI
有赞技术团队
有赞技术团队
博客园_首页

人人都是产品经理

为什么你的产品找不到差异化?90%的失败都卡在第一步上(下) – 人人都是产品经理, 3年从30万到1300万用户、获2200万美元融资,这个AI教育产品用“抽卡”破解了获客难题 – 人人都是产品经理, 园区招商系统怎么做才能真正帮到去化?我加了这一个功能,推广链接转发400次阅读过万 – 人人都是产品经理, AI大事件:OpenAI发完网络安全模型又搞药物研发,小鹏汽车要抓”DeepSeek时刻” – 人人都是产品经理, 电商不是卖货,是一场更残酷的产品经理实战 – 人人都是产品经理, 没想到,活动营销又回来了! – 人人都是产品经理, 为何All-in海外KOC:一场关于AI时代窗口期的豪赌 – 人人都是产品经理, 重新理解企业的内部协作 – 人人都是产品经理, 苹果的 AI 战略到底是什么? – 人人都是产品经理, 医疗智能体·第2讲——合规护城河:等保、PIPL与HIPAA的架构实战 – 人人都是产品经理, 向量知识库五步法:从“答非所问”到“精准回复” – 人人都是产品经理, 鸿蒙PC三方库构建总指挥HPKBUILD(sha)库为例 – 人人都是产品经理, 何时该用LLM?AI产品经理的LLM设计指南 – 人人都是产品经理, 医疗信息领域的需求方、决策方、准入方以及关注点(二) – 人人都是产品经理, 即梦涨价:一场被误读的「傲慢」 – 人人都是产品经理, 面试AI PM必答题:Hermes和OpenClaw的区别,如何讲清楚业务价值 – 人人都是产品经理, AI的下一张船票:世界模型——AI产品经理必须理解的技术拐点 – 人人都是产品经理, 小红书做GEO,怎么让AI信你?记住这 3 个重要信息 – 人人都是产品经理, 5 家印度 AI 初创公司,看看印度 AI 再做什么 – 人人都是产品经理, AI项目跨团队协作:产品技术业务如何不打架 – 人人都是产品经理, Agentic Workflow(智能体工作流):让AI从”答案生成器”变成”数字员工” – 人人都是产品经理, lycium_plusplus 项目全景解读:OpenHarmony 三方库构建的“大管家” – 人人都是产品经理, 从爆单救火到前置履约:两套预采策略,把生鲜大促履约效率拉满 – 人人都是产品经理, 什么时候该补货?我用一轮数据做了一个决定 – 人人都是产品经理, 从“机械兜底”到“动态分流”:AI客服重复进线治理的4大底层逻辑 – 人人都是产品经理, 抖音拼效率,红书拼洞察 – 人人都是产品经理, 全民狂欢与退潮——为什么龙虾这波热潮冷却得如此之快? – 人人都是产品经理, Stripe押注!MPP重塑全球支付 – 人人都是产品经理, 小红书GEO:AI引用你的内容,不是因为你对,而是因为你看起来可信 – 人人都是产品经理, 前百度副总裁押注办公Agent,日韩付费爆发,Manus迎来强劲对手 – 人人都是产品经理,
Polyline组件如何绘制渐变区域?
华为开发者联盟 · 2026-04-14 · via 人人都是产品经理

本问答帖原创发布在华为开发者联盟社区 ,欢迎开发者前往论坛提问交流。

更多与该问题相关的讨论,请点击原帖查看:

Polyline组件如何绘制渐变区域?-华为开发者问答 | 华为开发者联盟 (huawei.com)

问题描述:

如何使用Polyline组件、Polygon组件、Path组件,实现描绘折线后,折线以下区域呈现渐变效果?

解决方案:

【背景知识】

  • mpchart是一个包含各种类型图表的图表库,主要用于业务数据汇总,例如销售数据走势图、股价走势图等场景中使用。方便开发者快速实现图表UI。mpchart主要包括线形图、柱状图、饼状图、蜡烛图、气泡图、雷达图、瀑布图等自定义图表库。
  • setGradientFillColor用于设置折线图下方区域为渐变色。

【解决方案】
使用mpchart画出LineChart折线,再通过setGradientFillColor来设置填充颜色,参考示例:

import {

JArrayList, // 工具类:数据集合

Description, // 图表描述标签

Legend, // 图表Legend(图例)部件

EntryOhos,// 图表数据结构基础类

LineDataSet, // 线形图数据集合

ILineDataSet, // 线形图数据集合的操作类

LineData, // 线形图数据包

Mode, // 线形图形状

LineChart, // 线形图图表类

LineChartModel,// 线形图配置构建类

ChartColorStop, // 颜色类

MarkerView, // 图例形状

} from '@ohos/mpchart';

@Entry

@Component

struct TestPage {

@State model: LineChartModel = new LineChartModel();

@State dataSet: LineDataSet = new LineDataSet(null, 'DataSet');

@State normalMarker: MarkerView = new MarkerView();

aboutToAppear() {

// 初始化图表配置构建类

this.model = new LineChartModel();

// 获取图表描述部件,设置图表描述部件不可用,即图表不进行绘制描述部件

let description: Description | null = this.model.getDescription()

if (description) {

description.setEnabled(false);

}

let legend: Legend | null = this.model.getLegend();

if (legend) {

legend.setEnabled(false);

}

// 设置图表数据最大的绘制数,如果超过该数值,则不进行绘制图表的数值标签

this.model.setMaxVisibleValueCount(10);

// 设置图表左Y轴信息

let leftAxis = this.model.getAxisLeft();

if (leftAxis) {

leftAxis.setEnabled(false)

}

// 设置图表右Y轴信息

let rightAxis = this.model.getAxisRight();

if (rightAxis) {

rightAxis.setEnabled(false);

}

// 设置X轴信息

let xAxis = this.model.getXAxis();

if (xAxis) {

xAxis.setEnabled(false)

}

// 为图表设置markerView

this.normalMarker = new MarkerView();

this.model.setMarker(this.normalMarker);

// 生成图表数据

let lineData: LineData = this.getLineData();

// 将数据与图表配置类绑定

this.model.setData(lineData);

// 设置图表最大的X轴显示范围,如不设置,则默认显示全部数据

this.model.setVisibleXRangeMaximum(20);

}

build() {

Column() {

LineChart({ model: this.model })

.width('100%')

.height('100%')

}

}

getLineData(): LineData {

let start: number = 1;

let values: JArrayList<EntryOhos> = new JArrayList<EntryOhos>();

for (let i = start; i < 20; i++) {

let val = Number(Math.random() * 150);

if (Math.random() * 100 < 25) {

values.add(new EntryOhos(i, val));

} else {

values.add(new EntryOhos(i, val));

}

}

this.dataSet = new LineDataSet(values, 'DataSet');

this.dataSet.setHighLightColor(Color.Black);

this.dataSet.setLineWidth(1);

this.dataSet.setDrawIcons(false);

this.dataSet.setMode(Mode.LINEAR); // 直线模式

this.dataSet.setDrawCircles(false); // 折线点画圆圈

this.dataSet.setDrawCircleHole(false); // 设置内部孔

this.dataSet.setColorByColor(Color.Blue); // 设置折线颜色

// 渐变色填充

let gradientFillColor = new JArrayList<ChartColorStop>();

gradientFillColor.add(["#0C0099CC", 0.2]);

gradientFillColor.add(["#7F0099CC", 0.4]);

gradientFillColor.add(["#8b0099cc", 0.6]);

gradientFillColor.add(["#ad0099cc", 0.8]);

gradientFillColor.add(["#0099CC", 1.0]);

this.dataSet.setGradientFillColor(gradientFillColor);

// 保证渐变色设置生效

this.dataSet.setDrawFilled(true);

// 设置数据点的颜色

this.dataSet.setCircleColor(Color.Blue);

// 关闭线形图的选中横竖线

this.dataSet.setDrawHighlightIndicators(false)

let dataSetList: JArrayList<ILineDataSet> = new JArrayList<ILineDataSet>();

dataSetList.add(this.dataSet);

let lineData: LineData = new LineData(dataSetList);

return lineData

}

}

【总结】
mpchart除了可以使用默认的图表外,还可以自定义图表类型,使用中的问题可参考常见问题的解决

▶更多实践干货就在华为开发者联盟

▶扫码加入鸿蒙主题交流群,共同交流鸿蒙应用创新与开发