LVGL圆弧、线条、图片、色环、按钮矩阵、文本区域、键盘部件

目录

LVGL圆弧部件

LVGL线条部件

LVGL图片部件

LVGL色环部件

LVGL按钮矩阵部件

LVGL文本区域部件

LVGL键盘部件


LVGL圆弧部件

圆弧部件以弧形滑动的形式来调节、显示某个参数的值。

圆弧部件组成部分:

        背景弧LV_PART_MAIN

        前景弧LV_PART_INDICATOR

        旋钮LV_PART_KNOB

创建圆弧部件:

lv_obj_t *arc = lv_arc_create(parent);

设置范围值、当前值:

lv_arc_set_range(arc, 0, 200);    /* 设置范围值 */
lv_arc_set_value(arc, 80);        /* 设置当前值(需要在范围值之内) */

设置圆弧角度(不建议使用):

lv_arc_set_angles(arc, 135, 270);    /* 设置前景狐角度 */
lv_arc_set_bg_angles(arc, 135, 45);  /* 设置背景狐角度 */

设置旋转角度(顺时针旋转):

lv_arc_set_rotation(arc, 180);

获取当前值:

lv_arc_get_value(arc);
static void event_cb(lv_event_t *e)
{lv_obj_t *target = lv_event_get_target(e);printf("%d \n", lv_arc_get_value(target));
}lv_obj_add_event_cb(arc,event_cb, LV_EVENT_VALUE_CHANGED, NULL);

设置模式、圆弧绘制速率:

lv_arc_set_mode(arc, LV_PART_MODE_REVERSE);    /* 设置模式 */
lv_arc_set_change_rate(arc, 90);               /* 绘制速率:90°/s */

LVGL线条部件

线条部件能够在一组坐标点之间依次绘制直线。

线条部件组成部分:

        主体LV_PART_MAIN

创建线条部件:

lv_obj_t *line = lv_line_create(parent);

设置线条坐标点:

static lv_point_t line_points[] = {{15,5}, {25,20}, {5,20}, {15,5}};
lv_line_set_points(line, line_points, 4);

设置线条样式:

lv_obj_set_style_line_width(line, 8, LV_PART_MAIN);        /* 设置宽度 */
lv_obj_set_style_line_rounded(line, true, LV_PART_MAIN);   /* 设置圆角 */

设置y轴反转:

lv_line_set_y_invert(line, true);

Tips:第42讲 部件篇-线条部件_哔哩哔哩_bilibili演示了正弦波的产生函数。

LVGL图片部件

图片部件可用于图片显示、功能界面优化、背景优化等。

图片部件组成部分:

        主体LV_PART_MAIN

创建图片部件:

lv_obj_t *img = lv_img_create(parent);

设置图片源(图片转数组工具:LVGL官网-Tools-Image converter):

LV_IMG_DECLARE(img_bird);            /* 声明图片 */
lv_img_set_src(img, &img_bird);      /* 设置图片源 */

设置图片偏移:

lv_img_set_offset_x(img, 100);    /* x轴偏移100 */
lv_img_set_offset_y(img, 20);     /* y轴偏移20 */

图片重新着色:

lv_obj_set_style_img_recolor(img, lv_color_hex(0xffe1d2), LV_PART_MAIN);
lv_obj_set_style_img_recolor_opa(img, 150, LV_PART_MAIN);

设置图片缩放、旋转:

lv_img_set_zoom(img, 512);     /* 放大2倍 */
lv_img_set_angle(img, 900);    /* 顺时针方向旋转90° */

设置中心点:

lv_obj_update_layout(img);    /* 更新图片布局信息 */
lv_img_set_pivot(img, 0,0);  /* 设置中心点 */

LVGL色环部件(V9无)

在UI设计中,色环部件一般用作颜色选择器。

色环部件组成部分:

        主体LV_PART_MAIN

        旋钮LV_PART_KNOB

创建色环部件:

lv_obj_t *cw = lv_colorwheel_create(parent, knob_recolor);

设置当前选中颜色:

lv_colorwheel_set_rgb(cw, lv_color_hex(0xff0000));

获取当前选中颜色:

lv_colorwheel_get_rgb(cw);
static lv_obj_t *obj;static void event_cb(lv_event_t *e)
{lv_obj_t *target = lv_event_get_target(e);lv_obj_set_style_bg_color(obj, lv_colorwheel_get_rgb(target), LV_PART_MAIN);
}obj = lv_obj_create(lv_src_act());
lv_obj_add_event_cb(cw, event_cb, LV_EVENT_VALUE_CHANGED, NULL);

设置色环模式:

enum{LV_COLORWHEEL_MODE_HUE,            /* 色相 */LV_COLORWHEEL_MODE_SATURATION,     /* 饱和度 */LV_COLORWHEEL_MODE_VALUE,          /* 明度 */
};lv_colorwheel_set_mode(cw, LV_COLORWHEEL_MODE_...);
lv_colorwheel_set_mode_fixed(cw, true);                /* 固定色环模式 */

LVGL按钮矩阵部件

按钮矩阵部件可以在不同的行和列中显示多个轻量级按钮。

按钮矩阵部件组成部分:

        主体LV_PART_MAIN

        按钮LV_PART_ITEMS

创建按钮矩阵部件:

lv_obj_t *btnm = lv_btnmatrix_create(parent);

设置按钮数量、文本:

static const char *map[] = {"btn1", "\n", "btn2","btn3",""};    /* 定义按钮数组,最后一个元素必须为空 */
lv_btnmatrix_set_map(btnm, map);                                /* 设置按钮 */

设置按钮相对宽度(默认为1):

lv_btnmatrix_set_btn_width(btnm, id, width);    /* 索引(id)从0开始,宽度1~7(默认为1) */

获取按钮索引、文本:

lv_btnmatrix_get_selected_btn(btnm);    /* 获取索引 */
lv_btnmatrix_get_btn_text(btnm, id);    /* 获取文本 */
static void event_cb(lv_event_t *e)
{uint8_t id;lv_obj_t *target = lv_event_get_target(e);id = lv_btnmatrix_get_selected_btn(target);printf("%d %s\n", id, lv_btnmatrix_get_btn_text(target, id));
}lv_obj_add_event_cb(btnm, event_cb, LV_EVENT_VALUE_CHANGED, NULL);

设置、清除按钮属性:

enum
{LV_BTNMATRIX_CTRL_HIDDEN,        /* 隐藏 */LV_BTNMATRIX_CTRL_DISABLED,      /* 失能 */LV_BTNMATRIX_CTRL_CHECKABLE,     /* 允许状态切换 */LV_BTNMATRIX_CTRL_RECOLOR,       /* 允许文本重新着色,#ff0000 btn1# */
};lv_btnmatrix_set_btn_ctrl(btnm, id, LV_BTNMATRIX_CTRL...);        /* 设置单个按钮属性 */
lv_btnmatrix_clear_btn_ctrl(btnm, id, LV BTNMATRIX CTRL ..);      /* 清除单个按钮属性 */
lv_btnmatrix_set_btn_ctrl_all(btnm, LV BTNMATRIX CTRL....);       /* 设置所有按钮属性 */

设置单次选中属性:

lv_btnmatrix_set_one_checked(btnm, true);    /* 注意:需要先设置允许状态切换属性 */

LVGL文本区域部件

文本区域部件即文本输入框,用户可以在其中输入文本内容。

文本区域部件组成部分:

        主体LV_PART_MAIN

        滚动条LV_PART_SCROLLBAR

        所选文本LV_PART_SELECTED

        光标LV_PART_CURSOR

        占位符TEXTAREA_PLACEHOLDER

创建文本区域部件:

lv_obj_t *ta = lv_textarea_create(parent);

添加文本:

lv_textarea_add_char(ta, 'A');        /* 添加一个字符到当前光标处 */
lv_textarea_add_text(ta, "BCDEF");    /* 添加字符串到当前光标处 */lv_obj_t *keyboard = lv_keyboard_create(lv_scr_act());    /* 创建键盘部件 */
lv_keyboard_set_textarea(keyboard, ta);                   /* 关联键盘和文本区域部件 */

设置光标位置:

lv_textarea_set_cursor_pos(ta, 0);    /* 0:最左侧,LV_TEXTAREA_CURSOR_LAST:最右侧 */

删除文本:

lv_textarea_del_char(ta);            /* 删除光标左侧的一一个字符 */
lv_textarea_del_char_forward(ta);    /* 删除光标右侧的一个字符 */

设置模式:

lv_textarea_set_one_line(ta, true);            /* 单行模式 */
lv_textarea_set_password_mode(ta, true);       /* 密码模式(隐藏输入的内容)*/
lv_textarea_set_password_show_time(ta, 100);   /* 密码显示时间 */

限制字符输入:

lv_textarea_set_accepted_chars(ta, "0123456789");    /* 限制接收的字符 */
lv_textarea_set_max_length(ta, 6);                   /* 限制字符长度 */

设置占位符:

lv_textarea_set_placeholder_text(ta, "password");    /* 提示输入密码 "/

获取文本:

const char *txt = lv_textarea_get_text(ta);    /* 获取文本框文本 */
static void event_cb(lv_event_t *e)
{lv_obj_t *target = lv_event_get_target(e);const char *txt = lv_textarea_get_text(target);if(strcmp(txt, "123456") == 0){printf("pass \n");}printf("%s \n", txt);
}lv_obj_add_event_cb(ta, event_cb, LV_EVENT_VALUE_CHANGED, NULL);

对比文本内容:

strcmp(const char *s1, const char *s2);    /* 当s1=s2时,返回0 */

LVGL键盘部件

键盘部件可用于输入文本内容,其本质上就是一个特殊的按钮矩阵。

键盘部件组成部分:

        主体LV_PART_MAIN

        按钮LV_PART_ITEMS

创建键盘部件:

lv_obj_t *kb = lv_keyboard_create(parent);

关联文本框:

lv_obj_t *ta = lv_textarea_create(lv_scr act());    /* 创建文本区域部件 */
lv_keyboard_set_textarea(kb, ta);                   /* 关联键盘和文本区域部件 */

设置按键弹窗:

lv_keyboard_set_popovers(kb, true);    /* 允许按键弹窗提示 */

设置键盘模式:

lv_keyboard_set_mode(kb, LV_KEYBOARD_MODE_NUMBER);    /* 数字键盘模式 */

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/842891.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浏览器提示网站不安全怎么办?有什么解决办法吗?

当你在浏览器中访问一个网站时,如果看到提示说该网站不安全,这通常是由于网站没有使用SSL证书或者SSL证书存在问题。SSL证书在这里扮演着非常关键的角色,下面我会详细解释它的作用以及如何解决这类不安全提示。 SSL证书的作用: 1…

【CTF Web】CTFShow web11 Writeup(RCE+PHP+代码审计)

web11 1 阿呆听完自己菜死了&#xff0c;自己呆了。决定修好漏洞&#xff0c;绝对不能让自己再菜死了。 解法 可知 flag 在 config.php。 <?php # flag in config.php include("config.php"); if(isset($_GET[c])){$c $_GET[c];if(!preg_match("/system…

WorldSpace下的合批策略与ScreenSpace有什么区别

1&#xff09;WorldSpace下的合批策略与ScreenSpace有什么区别 2&#xff09;在iOS上用Metal取代OpenGL的多么 3&#xff09;在动画蓝图中将两个或多个动画同时融合到同一个网格 4&#xff09;Mipmap如何限定层级 这是第387篇UWA技术知识分享的推送&#xff0c;精选了UWA社区的…

java面对对象编程-多态

介绍 方法的多态 多态是在继承&#xff0c;重载&#xff0c;重写的基础上实现的 我们可以看看这个代码 package b;public class main_ {public static void main(String[] args) { // graduate granew graduate(); // gra.cry();//这个时候&#xff0c;子类的cry方法就重写…

结合Django和Vue.js构建现代Web应用

文章目录 1. 创建Django项目2. 配置Django后端3. 创建Vue.js前端4. 连接Django和Vue.js5. 构建和部署 在现代Web开发中&#xff0c;结合后端框架和前端框架是非常常见的&#xff0c;其中Django作为一种流行的Python后端框架&#xff0c;而Vue.js则是一种灵活强大的前端框架。本…

仿冒、钓鱼、入侵……警惕邮件安全这些“坑”

为了保证用户对电子邮箱系统的安全使用&#xff0c;保证个人的隐私和财产的安全&#xff0c;我们呼吁每个人都要加强自己的网络安全意识&#xff0c;在对电子邮件进行处理的时候&#xff0c;要对钓鱼邮件进行认真的识别&#xff0c;同时还需要设定一个客户的密码来保证你的邮箱…

新旅程:类与对象的魔法课堂

&#x1f389;&#x1f389;&#x1f389;欢迎莅临我的博客空间&#xff0c;我是池央&#xff0c;一个对C和数据结构怀有无限热忱的探索者。&#x1f64c; &#x1f338;&#x1f338;&#x1f338;这里是我分享C/C编程、数据结构应用的乐园✨ &#x1f388;&#x1f388;&…

html+CSS部分基础运用7

项目1 设计简易灯箱画廊 1.实验所需素材 在trees文件夹中提供一个MP3文件和18个JPG文件&#xff0c;设计页面时可以使用。 2.编程实现简易灯箱画廊&#xff0c;鼠标单击任一个图像超链接&#xff0c;在底部浮动框架中显示大图像&#xff0c;效果如图4-1所示的页面。 图4-1 简…

Echarts图表库推荐以及使用Echarts实现饼图端头弧形效果

推荐Echarts图表库官方链接http://www.ppchart.com/#/ 下面是一段实现饼图端头弧形效果的Echarts代码 虽然有了上面的图表库&#xff0c;里面案例也挺多&#xff0c;但是就是没找到我想要的这种效果&#xff0c;索性就手写了一个 下面代码可以直接去我上面的图标库运行看效果…

书籍学习|基于SprinBoot+vue的书籍学习平台(源码+数据库+文档)

书籍学习平台 目录 基于SprinBootvue的书籍学习平台 一、前言 二、系统设计 三、系统功能设计 1平台功能模块 2后台功能模块 5.2.1管理员功能模块 5.2.2用户功能模块 5.2.3作者功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 …

工程机械比例阀电流采集方案——IPEhub2与IPEmotion APP

自从国家实施一带一路和新基建计划以来&#xff0c;工程机械的需求量呈现出快速增长的趋势。而关于工程机械&#xff0c;其比例阀的控制问题不容忽视。比例阀是一种新型的液压控制装置——在普通压力阀、流量阀和方向阀上&#xff0c;用比例电磁铁替代原有的控制部分&#xff0…

如何使用Cloudways搭建WordPress网站

如今&#xff0c;搭建网站已经变得非常简单&#xff0c;这主要得益于开源的CMS建站系统的兴起。即使是不懂编程的人也能轻松搭建自己的网站&#xff0c;这些CMS系统提供了丰富的主题模板和插件&#xff0c;使用户可以通过简单的拖放和配置操作来建立自己的网站。 WordPress是目…

大语言模型实战——搭建纯本地迷你版RAG

1. 概念 RAG&#xff08;Retrieval Augmented Generation&#xff09;检索增强生成&#xff0c;它结合了搜索技术和大语言模型的提示词功能&#xff0c;以搜索算法找到的信息作为背景上下文&#xff0c;来辅助大语言模型&#xff08;Large Language Model, LLM&#xff09;生成…

Oracle数据库操作问题汇总

一、简介 Oracle Database&#xff0c;又名Oracle RDBMS&#xff0c;或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是世界上流行的关系数据库管理系统&#xff0c;系统可移植性好、使用方便、功能强&…

基于SpringBoot+Vue在线动漫信息平台设计和实现(源码+LW+部署讲解)

&#x1f339;作者主页&#xff1a;青花锁 &#x1f339;简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java微服务架构公号作者&#x1f604; &#x1f339;简历模板、学习资料、面试题库、技术互助 &#x1f339;文末获取联系方式 &#x1f4dd; &#x1f339;推荐一个人…

Ubuntu20.04安装VINS_Mono 和 VINS_Fusion

文章目录 一、问题描述二、依赖环境1. Eigen 安装2. glog 安装3. gflags 安装4. ceres 安装 三、VINS-Mono 安装1. git 下载并安装2. OpenCV 版本冲突3. 运行 四、VINS—Fusion 安装1. git 下载并安装2. OpenCV 版本冲突3. 运行 五、日常bug1. 动静态库链接冲突 一、问题描述 …

今日好料推荐(Altium Designer + 仿真器驱动)

今日好料推荐&#xff08;Altium Designer 仿真器驱动&#xff09; 参考资料在文末获取&#xff0c;关注我&#xff0c;获取优质资源。 Altium Designer Altium Designer 是一种高度集成的电子设计自动化 (EDA) 软件工具&#xff0c;广泛应用于电子电路和印刷电路板 (PCB) …

操作系统实验--终极逃课方法

找到图片里的这个路径下的文件 &#xff0c;结合当前题目名称&#xff0c;把文件内容全部删除&#xff0c;改为print print的内容为下图左下角的预期输出的内容

Java---Cloneable接口---浅克隆和深克隆

在Java中&#xff0c;我们如何实现一个对象的克隆呢&#xff1f; 在Java中实现对象的克隆&#xff0c;我们要用到Cloneable接口。克隆也分为浅克隆和深克隆。 1.实现浅克隆 1.重写clone方法 当我们想直接通过前面已经建立好的对象来调用Object类中的clone方法时&#xff0c;…

解决mybatis/mybatis plus报错:Invalid bound statement (not found) 的方法汇总

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)问题&#xff0c;即在mybatis中dao接口与mapper配置文件在做映射绑定的时候接口与xml不匹配&#xff0c;要么是找不到&#xff0c;要么是找到了却匹配不到。 我的问题是项目没有把最新的方法x…