LVGL 控件之线条(lv_line)

news2024/11/24 0:25:46

目录

  • 一、概述
  • 二、线条
    • 1、设置连接点
    • 2、自适应大小
    • 3、翻转 y 轴
    • 4、样式
    • 4.1 设置宽度
      • 4.2 末端形态
    • 4.3 虚线
    • 5、API 函数


一、概述

线条部件只有一个组成部分:主体 LV_PART_MAIN

通过一组点绘制出相连的直线,通过 lv_line_create 创建相应的对象。

二、线条

1、设置连接点

线条是由多个点连接而成的对象,用户可以使用 lv_point_t 类型的数组存储这些坐标点,并调用 lv_line_set_points 函数,把这些坐标点传递给线条部件,它将会把这些点连接起来,最终绘制成线条。

例:

static lv_point_t line_points[] = { {5, 5}, {70, 70}, {120, 10},
                                    {180, 60}, {240, 10} };

void my_gui(void)
{
    lv_obj_t *line1 = lv_line_create(lv_scr_act());
    lv_line_set_points(line1, line_points, 5);
    lv_obj_center(line1);
}

在这里插入图片描述
上图中,因为线条部件被居中对齐,所以坐标原点在该部件居中后的左上方,如下图所示:

2、自适应大小

默认情况下,线条部件的宽度和高度都是 LV_SIZE_CONTENT,这意味着它将自动设置自身的大小,以适应所有的点。如果用户设置了线条部件的大小,则超出的部分可能不可见。

如果启用,则在设置点后,将根据点之间的最大 x 和 y 坐标更改对象的宽度和高度。该自动调整大小默认情况下启用。lv_line_set_auto_size(line, true)

3、翻转 y 轴

默认情况下,y == 0 点是在 line 对象的顶部最左侧。这在某些情况下可能是不直观的(LCD 坐标系),这时候可以使用 lv_line_set_y_invert(line, true) 函数来反转y坐标 。在这种情况下, y == 0 将是物体的底部最左侧(直角坐标系)。

默认不反转 y 轴。

lv_line_set_y_invert(line1, true);

4、样式

4.1 设置宽度

lv_obj_set_style_line_width(line1, 10, LV_PART_MAIN);

4.2 末端形态

可以看到,当线条边粗后,线条末端显得很僵硬。不过我们可以通过函数 lv_obj_set_style_line_rounded 调整。

线条末端可以是圆的或者直线:

lv_obj_set_style_line_rounded(line1, true, LV_PART_MAIN);

4.3 虚线

虚线只能是水平或者垂直方向。通过 lv_obj_set_style_line_dash_widthlv_obj_set_style_line_dash_gap 设置实线和空部分的宽度。

static lv_point_t line_points[] = { {50, 50}, {270, 50}};

void my_gui(void)
{
    lv_obj_t *line1 = lv_line_create(lv_scr_act());
    lv_line_set_points(line1, line_points, 2);
    
    lv_obj_set_style_line_width(line1, 10, LV_PART_MAIN);
    lv_obj_set_style_line_rounded(line1, true, LV_PART_MAIN);

    lv_obj_set_style_line_dash_width(line1, 10, LV_PART_MAIN);
    lv_obj_set_style_line_dash_gap(line1, 20, LV_PART_MAIN);
    
    lv_obj_center(line1);
}

5、API 函数

函数描述
lv_line_create()创建线条部件
lv_line_set_points()设置一个点数组,线条对象将这些点连接起来
lv_line_set_y_invert()启用或禁用Y 坐标反转
lv_line_get_y_invert()获取Y 坐标反转属性

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

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

相关文章

利用深度学习实现验证码识别-4-ResNet18+imagecaptcha

在当今的数字化世界中,验证码(CAPTCHA)是保护网站免受自动化攻击的重要工具。然而,对于用户来说,验证码有时可能会成为一种烦恼。为了解决这个问题,我们可以利用深度学习技术来自动识别验证码,从…

5.第二阶段x86游戏实战2-认识内存

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 工具下载: 链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…

Cesium 展示——Cesium 初始化视角在中国并加载数据(china.json)

文章目录 需求一:初始化视角在中国分析需求二:加载中国数据(china.json)需求一:初始化视角在中国 在初始化 Cesium 的 Viewer 后,视角是在美国,如何让其视角指向中国 分析 viewer.value = new Cesium.Viewer(cesiumContainer.value, {homeButton

redis基本数据结构-string

文章目录 1. redis的string数据结构2. 常见的业务场景2.1 缓存功能案例讲解背景优势解决方案代码实现 2.2 计数器案例讲解背景优势解决方案代码实现 2.3 分布式锁案例讲解背景优势解决方案代码实现 2.4 限流案例讲解背景优势解决方案代码实现 2.5 共享session案例讲解背景优势解…

Docker突然解封,直接拉取!

文章目录 Docker突然解封,直接拉取!封禁的原因是什么?解封的原因是什么?封禁对开发的影响经验教训 最近开始公众号文章也开始同步更新了,对Java、大数据、人工智能、开发运维相关技术分享,文章对您有用的话…

Linux 8250串口控制器

1 8250串口类型的识别 Intel HW都使用DesignWare 8250: drivers/mfd/intel-lpss-pci.c drivers/tty/serial/8250/8250_dw.c IIR寄存器的高2位bit7、bit6用来识别8250串口的类型: 0 - 8250,无FIFO 0 - 并且存在SCR(Scratch registe…

SQL优化(二)统计信息

收集统计信息 数据库的统计信息非常重要,如果没有正确地收集表的统计信息,或者没有及时地更新表的统计信息,SQL就有可能走错执行计划,也就会出现性能问题。 统计信息主要分为表的统计信息、列的统计信息、索引的统计信息、系统的…

TeamTalk数据库代理服务器

文章目录 main函数主流程关键步骤线程池redis缓存未读消息计数未读消息计数-单聊未读消息计数-群聊 群成员管理 main函数主流程 关键步骤 初始化epoll 线程池数据入口 reactor CProxyConn::HandlePduBuf异步task任务封装,把任务放入线程池;线程池里的…

【AI学习】AI科普:专有名词介绍

这里是阿川的博客,祝您变得更强 ✨ 个人主页:在线OJ的阿川 💖文章专栏:AI入门到进阶 🌏代码仓库: 写在开头 现在您看到的是我的结论或想法,但在这背后凝结了大量的思考、经验和讨论 目录 1.AI序…

TCP通信三次握手、四次挥手

前言 前面我说到了,UDP通信的实现,但我们经常说UDP通信不可靠,是因为他只会接收和发送,并不会去验证对方收到没有,那么我们说TCP通信可靠,就是因为他会进行验证接收端是否能够接收和发送,并且只…

给大家推荐好用的AI网站

地址:https://ai.ashuiai.com/auth/register?inviteCode8E8DIC1QCR 个人觉得挺好用的,可以免费,免费有限制次数,也可以会员升级200永久免费,我用的200永久免费。 可以在国内使用以下ai模型 回答问题更智能&#xff…

计算机毕业设计 校内跑腿业务系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

分享6个我喜欢的常用网站,来看看有没有你感兴趣的!

分享6个我自己很喜欢的常用网站,平时工作生活中经常会打开,来看看有没有你感兴趣的! 1.Crazygames crazygames.com/ 一个超赞的在线小游戏平台,上面有超过7000种游戏任你选。不管你喜欢冒险、解谜、闯关,还是装扮、赛…

概要设计例题

答案:A 知识点: 概要设计 设计软件系统的总体结构:采用某种方法,将一个复杂的系统按照功能划分成模块;确定每个模块的功能;确定模块之间的调用关系;确定模块之间的接口,即模块之间…

返工(Rework)与返修(Repair)有何不一样

IATF 16949 汽车业质量管理体系,以客户需求为基础,组织透过相关单位了解客户需求后,向内部流程展开,目的是确保从研发到出货每个环节都能满足客户需求,同时管控制造过程的效率及良率,使产线能够稳定及准时交货给客户。 IATF 16949 条文中,针对「返工(Rework)」与「返修(…

linux工具的使用

1.yum和apt的概念与使用 yum 和 apt 是两种不同的包管理工具,用于在 Linux 系统上管理软件包。 yum (Yellowdog Updater, Modified) 发行版: 用于基于 RPM 的发行版,如 CentOS、RHEL 和 Fedora。基本命令: 更新包列表: sudo yum update安装包: sudo y…

Sky Takeaway

软件开发整体介绍 软件开发流程 角色分工 软件环境 苍穹外卖 项目介绍 定位:专门为餐饮企业定制的一款软件产品 技术选型 前端环境搭建 阅读readme文档 nginx.exe放入无中文目录运行并启动 后端环境搭建 项目结构 Nginx反向代理 优点 配置 Nginx反向代理 负…

QXlsx编译静态库-配置为Qt模块

Qt读写Excel–QXlsx编译为静态库-配置为Qt模块🍆 文章目录 Qt读写Excel--QXlsx编译为静态库-配置为Qt模块🍆[toc]1、概述🥔2、准备工作🥕3、配置环境🌽4、加载QXlsx静态库🥒 👉QXlsx使用&#x…

《深度学习》OpenCV 高阶 图像金字塔 用法解析及案例实现

目录 一、图像金字塔 1、什么是图像金字塔 2、图像金字塔作用 1)金字塔尺度间的图像信息补充 2)目标检测与识别 3)图像融合与拼接 4)图像增强与去噪 5)图像压缩与编码 二、用法解析 1、向下采样 1)概念…

【C++11 ——— 可变参数模板】

C11 ——— 可变参数模板 可变参数模板的概念可变参数模板的定义方式参数包的展开递归式展开参数包逗号表达式展开参数包 emplaceemplace 的使用emplace 的优势 可变参数模板的概念 在C11之前,函数模板和类模板中的模板参数数量是固定的。可变参数模板打破了这个限制,提供了一…