谷动谷力

 找回密码
 立即注册
查看: 1908|回复: 0
打印 上一主题 下一主题
收起左侧

中科蓝讯 BT8958B SDK 开发—— LVGL 指针表盘界面的实现

[复制链接]
跳转到指定楼层
楼主
发表于 2023-3-28 20:59:26 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
中科蓝讯 BT8958B SDK 开发—— LVGL 指针表盘界面的实现

一、前言
中科蓝讯 BT8958B SDK 中移植了 LVGL 7.11.0 版本的图形库,笔者将在此基础上跟大家分享一下指针表盘界面的实现。

二、图片资源的转换与添加
首先需要进行图片资源的转换,可通过 LVGL 官网图像转换工具进行转换。

1. 进行图像格式转换
以将图片转换为源文件为例,源文件是以数组的形式存放图片的像素颜色数据。以秒针图片进行转换为例,如图 2-1 所示。
图 2-1

需要注意的是,秒针图片是带有透明色的图片,除了秒针部分,背景为透明色。LVGL 支持带有不透明度的图片的显示,这里的颜色格式需选择 CF_TRUE_COLOR_ALPHA。CF_TRUE_COLOR 存储RGB颜色,而 CF_TRUE_COLOR_ALPHA 是在此基础上为每个像素添加一个字节的 Alpha 通道,用于存储不透明度。

输出格式选择 C array 后就可以进行转换,得到对应的 .c 文件。如图 2-2 所示,LVGL 中以图片数据类型结构体去存放对应的变量信息。
图 2-2

2. 进行图片资源添加
将生成的 sec_150.c 文件复制到 SDK 中内部图片资源的存放路径 app\gui\lvgl_ui 下,接着将该文件添加到工程的对应位置。

在使用前需要对该图片变量进行声明,如图 2-3 所示。
图 2-3

三、LVGL图像显示
表盘图片资源的添加可参考上面的内容。首先进行表盘图片的显示。如图 3-1 所示,创建图片对象进行显示,图片显示的用法类似,此处先不展开说明。
图 3-1

下面以秒针图片显示为例介绍 LVGL 的图像显示。如图 3-2 所示,以表盘图片对象为父对象,创建子对象。接着设置图片的显示源,调用该图片数组。接着设置对齐方式和偏移坐标,对齐方式设置 LV_ALIGN_CENTER,为中心对齐。
图 3-2

图片显示效果如图 3-3 所示。
图 3-3

四、指针表盘的简单应用
1. 图片旋转
接下来介绍通过图片的旋转去完成指针表盘时间的显示。LVGL 中可通过 lv_img_set_angle(img, angle) 函数对图片对象进行旋转。需注意的是,这里角度精度为 0.1 度,例如需要设置 90 度时,对应的 angle 需设置 900。

2. 设置旋转轴驱点
默认情况下,旋转的枢轴点是图像的中心,可以根据图片旋转需要进行设置。可通过 lv_img_set_pivot(img, pivot_x, pivot_y) 函数进行设置。lv_img_set_pivot(img, 0, 0) 则是设置图片旋转的枢轴点为图像的左上角。

3. 应用
在 SDK 中可通过获取 rtc_tm 结构体对应的变量值得到对应的时间值去计算角度,rtc_tm 结构体如图 4-1 所示。
图 4 -1

如图 4-2 所示,首先进行时针、分针、秒针图片对象旋转中心的设置,下一步获取对应的时间值,进行角度的计算,再设置旋转角度即可。
图 4-2

对于秒针图像,每走一秒需旋转 6 度。对于分针图像,每走一分钟也是需旋转 6 度。而对于时针图像,时针旋转的角度为小时旋转角度与分钟旋转角度的和,每走一小时,需旋转 30 度,每走一分钟,需旋转 0.5 度。

显示效果如图 4-3 所示。
图 4-3

五、结语
以上就是本篇文章的全部内容,感谢阅读。

六、参考资料


+19

最近谁赞过

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|深圳市光明谷科技有限公司|光明谷商城|Sunshine Silicon Corpporation ( 粤ICP备14060730号|Sitemap

GMT+8, 2024-12-27 08:02 , Processed in 0.112716 second(s), 42 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表