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

这一期讲解的控件是条形码,条形码在lvgl中是没有具体控件的需要用户去自定义组件,这里使用code128并由fhunleth提供。

(1)GUI-guider中使用

在控件列表中拖拽条形码控件,将控件拖入到屏幕中然后点击条形码在右侧属性面板中可以调试参数。

(2)用法

1.在lv_conf.h中启用LV_USE_BARCODE。

2.使用lv_barcode_create()创建条形码对象,使用lv_barcode_update()生成条形码。

  1. 调用 lv_barcode_set_scale() 调整缩放,调用 lv_barcode_set_dark_color() 和 lv_barcode_set_light_color() 调整颜色,调用 lv_barcode_set_direction() 设置显示方向,再次调用 lv_barcode_update() 重新生成条形码。

(3)使用提示

• 最好不要手动设置条形码的宽度,因为当 Widget 的宽度小于条形码的宽度时,由于截断,显示会不完整。

• 缩放调整只能是整数倍,例如,lv_barcode_set_scale(barcode, 2) 意味着 2x 缩放。

• 方向调整可以是 LV_DIR_HOR 或 LV_DIR_VER。

(4)代码

//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_barcode_1

//创建条形码对象

ui->screen_1_barcode_1 = lv_barcode_create(ui->screen_1);

//设置条形码尺寸

lv_obj_set_height(ui->screen_1_barcode_1, 50);

//设置缩放比例为1

lv_barcode_set_scale(ui->screen_1_barcode_1, 1);

//设置深色条颜色

lv_barcode_set_dark_color(ui->screen_1_barcode_1, lv_color_hex(0x2C3224));

//设置浅色背景色

lv_barcode_set_light_color(ui->screen_1_barcode_1, lv_color_hex(0xffffff));

//更新条形码数据并显示

const char * screen_1_barcode_1_data = "www.baidu.com";

lv_barcode_update(ui->screen_1_barcode_1, screen_1_barcode_1_data);

//确认位置和高度

lv_obj_set_pos(ui->screen_1_barcode_1, 136, 208);

lv_obj_set_height(ui->screen_1_barcode_1, 50);

本文章由威三学社出品

对课程感兴趣可以私信联系

相关推荐
草莓熊Lotso32 分钟前
Linux 文件描述符与重定向实战:从原理到 minishell 实现
android·linux·运维·服务器·数据库·c++·人工智能
大模型玩家七七35 分钟前
基于语义切分 vs 基于结构切分的实际差异
java·开发语言·数据库·安全·batch
恋猫de小郭37 分钟前
Flutter Zero 是什么?它的出现有什么意义?为什么你需要了解下?
android·前端·flutter
寻星探路6 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
工程师老罗7 小时前
如何在Android工程中配置NDK版本
android
曹牧8 小时前
Spring Boot:如何测试Java Controller中的POST请求?
java·开发语言
爬山算法9 小时前
Hibernate(90)如何在故障注入测试中使用Hibernate?
java·后端·hibernate
kfyty7259 小时前
集成 spring-ai 2.x 实践中遇到的一些问题及解决方案
java·人工智能·spring-ai
猫头虎9 小时前
如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题
java·开发语言·jvm·spring boot·python·开源·maven