当前位置: 首页 > news >正文

使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第三十讲)

这一期讲解lvgl中图表控件的基本使用,LVGL 的图表控件 (lv_chart) 是一个专为嵌入式系统设计的强大数据可视化工具,它支持多种图表类型、丰富的交互功能以及高度可定制的样式,能够以低内存占用实现美观的数据展示效果。

图表有四种显示类型:

在这里插入图片描述
折线图(LV_CHART_TYPE_LINE):将数据点用直线连接,并可在点上绘制标识,适用于展示数据趋势。
在这里插入图片描述
柱状图(LV_CHART_TYPE_BAR):使用不同高度的柱子表示数据大小,适用于比较不同类别的数据。

散点图(LV_CHART_TYPE_SCATTER):在X/Y坐标系上绘制点,可以观察两个变量之间的关系。

在这里插入图片描述
无显示(LV_CHART_TYPE_NONE):隐藏所有数据系列,可用于暂时不显示图表的情况。

以下是图表各个坐标轴的分布:
在这里插入图片描述
以下代码是折线图的初始化和数据添加:

//Write codes screen_1
ui->screen_1 = lv_obj_create(NULL);
ui->g_kb_screen_1 = lv_zh_keyboard_create(ui->screen_1, &lv_font_SourceHanSerifSC_Regular_12);
lv_obj_add_event_cb(ui->g_kb_screen_1, kb_event_cb, LV_EVENT_ALL, NULL);
lv_obj_add_flag(ui->g_kb_screen_1, LV_OBJ_FLAG_HIDDEN);
lv_obj_set_style_text_font(ui->g_kb_screen_1, &lv_font_SourceHanSerifSC_Regular_12, LV_PART_MAIN|LV_STATE_DEFAULT);
//480*480像素的正方形屏幕
lv_obj_set_size(ui->screen_1, 480, 480);
//禁用滚动条
lv_obj_set_scrollbar_mode(ui->screen_1, LV_SCROLLBAR_MODE_OFF);

//Write style for screen_1, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT.
//样式设置
lv_obj_set_style_bg_opa(ui->screen_1, 255, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_bg_color(ui->screen_1, lv_color_hex(0xffffff), LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_bg_grad_dir(ui->screen_1, LV_GRAD_DIR_NONE, LV_PART_MAIN|LV_STATE_DEFAULT);

//Write codes screen_1_chart_1

ui->screen_1_chart_1 = lv_chart_create(ui->screen_1);
//折线图
lv_chart_set_type(ui->screen_1_chart_1, LV_CHART_TYPE_LINE);
//3条水平线,5条垂直线
lv_chart_set_div_line_count(ui->screen_1_chart_1, 3, 5);
//5个数据点
lv_chart_set_point_count(ui->screen_1_chart_1, 5);
//y轴范围0~100
lv_chart_set_range(ui->screen_1_chart_1, LV_CHART_AXIS_PRIMARY_Y, 0, 100);
//次y轴范围0~100
lv_chart_set_range(ui->screen_1_chart_1, LV_CHART_AXIS_SECONDARY_Y, 0, 100);
//x轴缩放256倍
lv_chart_set_zoom_x(ui->screen_1_chart_1, 256);
//y轴缩放256倍
lv_chart_set_zoom_y(ui->screen_1_chart_1, 256);
//黑色线条,使用y轴
ui->screen_1_chart_1_0 = lv_chart_add_series(ui->screen_1_chart_1, lv_color_hex(0x000000), LV_CHART_AXIS_PRIMARY_Y);
//设置初始数据
#if LV_USE_FREEMASTER == 0
lv_chart_set_next_value(ui->screen_1_chart_1, ui->screen_1_chart_1_0, 1);
lv_chart_set_next_value(ui->screen_1_chart_1, ui->screen_1_chart_1_0, 20);
lv_chart_set_next_value(ui->screen_1_chart_1, ui->screen_1_chart_1_0, 30);
lv_chart_set_next_value(ui->screen_1_chart_1, ui->screen_1_chart_1_0, 40);
lv_chart_set_next_value(ui->screen_1_chart_1, ui->screen_1_chart_1_0, 5);
#endif
//位置:x=30,y=90
lv_obj_set_pos(ui->screen_1_chart_1, 30, 90);
//尺寸:417*268像素
lv_obj_set_size(ui->screen_1_chart_1, 417, 268);
lv_obj_set_scrollbar_mode(ui->screen_1_chart_1, LV_SCROLLBAR_MODE_OFF);

//Write style for screen_1_chart_1, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT.
//背景不透明
lv_obj_set_style_bg_opa(ui->screen_1_chart_1, 255, LV_PART_MAIN|LV_STATE_DEFAULT);
//白色背景
lv_obj_set_style_bg_color(ui->screen_1_chart_1, lv_color_hex(0xffffff), LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_bg_grad_dir(ui->screen_1_chart_1, LV_GRAD_DIR_NONE, LV_PART_MAIN|LV_STATE_DEFAULT);
//1像素边框
lv_obj_set_style_border_width(ui->screen_1_chart_1, 1, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_border_opa(ui->screen_1_chart_1, 255, LV_PART_MAIN|LV_STATE_DEFAULT);
//浅灰色边框
lv_obj_set_style_border_color(ui->screen_1_chart_1, lv_color_hex(0xe8e8e8), LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_border_side(ui->screen_1_chart_1, LV_BORDER_SIDE_FULL, LV_PART_MAIN|LV_STATE_DEFAULT);

//直角矩形
lv_obj_set_style_radius(ui->screen_1_chart_1, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
//2像素线宽
lv_obj_set_style_line_width(ui->screen_1_chart_1, 2, LV_PART_MAIN|LV_STATE_DEFAULT);
//浅灰色线条
lv_obj_set_style_line_color(ui->screen_1_chart_1, lv_color_hex(0xe8e8e8), LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_line_opa(ui->screen_1_chart_1, 255, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_shadow_width(ui->screen_1_chart_1, 0, LV_PART_MAIN|LV_STATE_DEFAULT);

//Write style for screen_1_chart_1, Part: LV_PART_TICKS, State: LV_STATE_DEFAULT.
//深灰色文字
lv_obj_set_style_text_color(ui->screen_1_chart_1, lv_color_hex(0x151212), LV_PART_TICKS|LV_STATE_DEFAULT);
//montserrat字体
lv_obj_set_style_text_font(ui->screen_1_chart_1, &lv_font_montserratMedium_12, LV_PART_TICKS|LV_STATE_DEFAULT);
lv_obj_set_style_text_opa(ui->screen_1_chart_1, 255, LV_PART_TICKS|LV_STATE_DEFAULT);
//2像素刻度线
lv_obj_set_style_line_width(ui->screen_1_chart_1, 2, LV_PART_TICKS|LV_STATE_DEFAULT);
//深灰色刻度线
lv_obj_set_style_line_color(ui->screen_1_chart_1, lv_color_hex(0xe8e8e8), LV_PART_TICKS|LV_STATE_DEFAULT);
lv_obj_set_style_line_opa(ui->screen_1_chart_1, 255, LV_PART_TICKS|LV_STATE_DEFAULT);

本文章由威三学社出品
对课程感兴趣可以私信联系


文章转载自:

http://WR60Xf0N.rngyq.cn
http://8VOKtDI2.rngyq.cn
http://y6iDEyqi.rngyq.cn
http://NEqyRZOS.rngyq.cn
http://vKdYFnPJ.rngyq.cn
http://I8qyhtoY.rngyq.cn
http://ZlxONoIk.rngyq.cn
http://k1DUQfkC.rngyq.cn
http://allruO5d.rngyq.cn
http://PTa7c5i3.rngyq.cn
http://LBLYmTzV.rngyq.cn
http://oNjZyYqf.rngyq.cn
http://Obzi1B06.rngyq.cn
http://TOeutbux.rngyq.cn
http://E65Cv4mn.rngyq.cn
http://RPpSQvxx.rngyq.cn
http://Q1yfdWpZ.rngyq.cn
http://lpnYKg2T.rngyq.cn
http://TUce9iL5.rngyq.cn
http://lpkAR5bt.rngyq.cn
http://45xKj5hD.rngyq.cn
http://yqHB06KY.rngyq.cn
http://iffc3IFq.rngyq.cn
http://k4hTzqV7.rngyq.cn
http://yMVU8cjp.rngyq.cn
http://zA4RSkx1.rngyq.cn
http://q3u4LihH.rngyq.cn
http://H7AZIjVO.rngyq.cn
http://Jzng0XIQ.rngyq.cn
http://9gW2O25G.rngyq.cn
http://www.dtcms.com/a/386745.html

相关文章:

  • Langchain4j开发之AI Service
  • 红帽证书需要什么报考条件
  • Ubuntu 虚拟机 | DPDK 协议栈开发 | 2、DPDK驱动绑定VMWare模拟网卡 + Testpmd发包测试
  • 【高等数学】第十二章 无穷级数——第二节 常数项级数的审敛法
  • 从弱 AI 到通用人工智能(AGI):我们还需要跨越哪些技术鸿沟?
  • Redis 在分布式会话管理中的应用:从单体到微服务的平滑迁移
  • 说说你对闭包的理解? 闭包使⽤场景
  • MySQL 存储过程完整实战手册---一篇吃透 Stored Procedure
  • Leetcode 763. 划分字母区间 贪心
  • 嵌入式系统arm高级系统调试技能-25.cat proc/vmallocinfo文件内容解读,内存异常分析
  • 良策金宝AI的技术内核:工程大模型如何破解行业知识壁垒
  • WJCZ(唯诺因)黄金三角抗衰体系的科学机制与作用解析
  • Base64:原理、应用与底层实现详解
  • 【设计模式】解析命令模式并附带一个可撤销重做的例子
  • Python爬虫实战:研究Pandas,构建物联网数据采集和分析系统
  • 视频无法播放怎么办?附详细故障排查指南
  • 【ICCV 2025】UniConvNet:扩展有效感受野并保持对任何规模的卷积神经网络的渐近高斯分布
  • 服装跟单管理系统:驱动服装行业高效运转的核心工具
  • 《LINUX系统编程》笔记p10
  • VS2022 更新 Microsoft.VisualStudio.WorkflowManagerTools安装失败
  • 利用BFS解决拓扑排序问题
  • 成本分析≠算账!6步打通从数据到决策的关键路径
  • 未来清洁技术:当有鹿巡扫机器人开始理解世界
  • 【更新至2024年】2013-2024年上市公司重点排污企业名单数据
  • 小程序获取视频第一帧
  • 文档处理控件Aspose.Words教程:在 C# 中将 Markdown 转换为 PDF
  • blender切割物体
  • 三防笔记本电脑是什么?一般什么人用?
  • openlist 或者 alist 迅雷网盘 迅雷专家版 需要手动加入输入验证码,迅雷网盘短信认证
  • 搭建node脚手架(一)