5、LVGL标签和样式_embedded_w的博客-程序员秘密_lvgl样式

技术标签: LVGL  

LVGL标签和样式

LVGL标签

标签本身是使用的最多的一个空间,主要作用是用来显示文本信息的.支持换行,图标字体,部分文本重绘色,长文本显示等.

标签API接口

API接口很多,在原子的资料里也写得很清楚,只罗列一些我常用的API.

  1. lv_label_set_text_fmt

    使用方法和printf很接近,示例:
    lv_label_set_text_fmt(now_label, "%d", (val_last));,需要注意的是,这个文本内容是动态文本,真正显示内容的内存空间是lvgl自己分配的.

  2. lv_label_set_align(lv_obj_t * label, lv_label_align_t align)

    设定文本对齐方式,共三种方式,左右对齐和剧中对齐.
    LV_LABEL_ALIGN_LEFT LV_LABEL_ALIGN_CENTER LV_LABEL_ALIGN_RIGHT

  3. lv_label_set_recolor(lv_obj_t * label, bool en)

    文本重绘色功能是否打开.

  4. lv_label_set_style(lv_obj_t * label, lv_label_style_t type, const lv_style_t * style)

    设定传入label对象的style,type目前只有LV_LABEL_STYLE_MAIN一个选项.

LVGL样式

简单理解,样式基本等价于控件的共有属性,比如颜色,宽度等.但是有些特殊的控件拥有一些特殊的属性,比如圆角半径,边框透明度等,所以LVGL里的样式包含大量属性,对于一些控件来说,必然会存在一些冗余而用不到的属性.

LVGL样式数据结构

如下所示,图来自于原子的资料,一共分为5大块.

LVGL_STYLE_DATA_STRUCTE

style.body

body是背景的属性,比如绘制按钮,属性框等.

  1. main_colorgrad_color分别为背景板的上半部分颜色和下半部分颜色,如果两者颜色不等,LVGL内部会对做出一个上半部分到下半部分的颜色渐变效果.
  2. radius设定背景板的圆角半径.
  3. opa设定该面板的透明属性,当透明度比较低的时候可以看到后面的内容.
  4. board设定面板边框属性.
    • part是绘制哪几条边框.
    • opa是边框透明度(0-255).
  5. shadow设定阴影效果
    • type 阴影的类型,是四周全部阴影还是只是底部阴影(只有两个选择).
  6. padding内边距,四个方向距离对象的距离.
    • inner 是容器内每个对象的间隔,和字体的间隔不一样.

以下图为例.
20201228225146
途中黄色部分是阴影效果.
绿色部分是边框效果.
红黑色部分为main_colorgrad_color效果.
四个角的弧度为radius设定的效果.

style.text

文本的属性,各个成员变量也比较好理解.说一下下面两个.

  1. letter_spcae 是字母间的间隔
  2. line_space 是行与行之间的间隔

style.image

图像的属性,这个要记录一下.

  1. colorintense

    指定混合颜色和混合强度,将图片的每一个像素点与指定颜色按照指定强度混合产生新的像素点数据.
    intense属性取值范围0-255.

  2. opa

    图像的透明度,取值范围0-255.

备注: 以上图举例,屏幕中间的闹钟图片当intense为200时,比较偏向于红色,当intense为1时,基本无限趋近于白色.

style.line

属性从字面意思就可以得知.说一下rounded,为1代表末尾用圆角绘制.如下图.

20201228230250

style.glass

这个比较简单,当为1时,子对象无法从父对象继承样式.为0时,子对象如果样式为NULL,则从父对象继承样式.

样式的使用

在LVGL里面内置了13个系统自带样式.效果如下所示.

20201228230940

备注: 这些系统内置样式的glass都为1,意味着这些样式无法被继承.

样式相关的API使用最多的是下面几个.

  • lv_style_copy(lv_style_t * dest, const lv_style_t * src)

    src的样式拷贝到dest中.

  • lv_obj_set_style(lv_obj_t * obj, const lv_style_t * style)

    设定对象的样式,如果不是基础对象则使用lv_xxx_set_style(lv_obj_t *obj, lv_xxx_style_t type, const lv_style_t * style)

  • lv_obj_refresh_style(lv_obj_t * obj)

    通知obj对象,样式已经改变,刷新样式,如果不调用,则下次运行lv_task_handler()的时候才会刷新.

    下面给出一个例子.

     lv_obj_t* bg_img = lv_img_create(lv_scr_act(), NULL);
     lv_img_set_src(bg_img, "S:./alarm_clock.bin");
     lv_obj_align(bg_img,NULL,LV_ALIGN_CENTER,0,0);
    
     static lv_style_t img_style;
     lv_style_copy(&img_style,&lv_style_plain);
     img_style.image.color = LV_COLOR_RED;
     img_style.image.intense = 200;
     lv_label_set_style(bg_img,LV_LABEL_STYLE_MAIN,&img_style);
    

    前三句是图片的显示,后面的就是图片的样式修改,主要用到了拷贝和设定样式.一般这两个也是最常用的函数.效果如下.

    20201228233938

    可以很清晰的看到,一个红色闹钟图标.

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/a986096115/article/details/112150092

智能推荐

Oracle sql 不为null 时间范围内查询 to_date yyyy-MM-dd HH24:mi:ss_Achilles_荒野求生的博客-程序员秘密

String bjrq = "2013-03-29 17:30:30";String sql="from TbStaffInfo t where (t.lx6!='1' and bjrq>=to_date('"+bjrq+"','yyyy-MM-dd HH24:mi:ss')) or (t.lx6 is null and bjrq>=to_date('"+bjrq+"','yyyy-MM-dd

程序员请照顾好自己,周末病魔差点一套带走我。_敖 丙的博客-程序员秘密

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

服务器微信了早上好,早上好微信问候语(精选50句)_weixin_39950772的博客-程序员秘密

早上好微信问候语(精选50句)在学习、工作或生活中,大家都写过问候语吧,问候语短小简单,是指能够拉近人与人之间的距离的语言。写起问候语来就毫无头绪?下面是小编为大家收集的早上好微信问候语,仅供参考,大家一起来看看吧。1、读万卷书不如行千里路,行千里路不如阅人无数,阅人无数不如名师指路。经师易得,人师难求。早安!2、淅淅沥沥的是春雨,轻轻柔柔的是春风,牵牵挂挂的是朋友,无论你是否感受到春的气息,我的...

Caffe的创始人贾扬清说,算法工程师将不存在?_我爱计算机视觉的博客-程序员秘密

如果你是一名AI方向在校研究生或者已经是在职的算法工程师,你应该已经深刻感受到AI行业的变化。2年前,如果你会用一些框架把深度学习的系统跑起来,能够把数据喂进去,能够跑出结果,那么你就能...

通用串行总控制器:由于其配置信息(注册表中的)不完整或已损坏,Windows 无法启动这个硬件设备(代码19)_串口由于其配置信息(注册表中的)不完整或已损坏,windows 无法启动这个硬件设备。_林几桶的博客-程序员秘密

感谢这个回答的帮助,在这个回答的帮助下我解决了在window10系统中的usb无法识别的问题一开始以为是鼠标坏了,后来发现U盘也没有办法识别,意识到可能驱动出现了问题win+R 进入运行,输入regedit点击确定进入注册表编辑器依次进入HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{36FC9E60-C465-11C...

大数据要学习什么知识?大数据学习的内容有哪些?_大数据技术主要学什么_✾ ͡冷೨夏ʚɞ͜✿的博客-程序员秘密

大数据作为2019年比较热门的技术,受到越来越多的关注,那么对于一个想进入大数据的朋友来说,最想知道的是:大数据学什么?大数据技术体系太庞杂了,基础技术覆盖数据采集、数据预处理、分布式存储、NOSQL数据库、多模式计算(批处理、在线处理、实时流处理、内存处理)、多模态计算(图像、文本、视频、音频)、数据仓库、数据挖掘、机器学习、人工智能、深度学习、并行计算、可视化等各种技术范畴和不同的层面...

随便推点

ESP8266-01s——无线模块使用_esp8266-01s最多可以接多少个客户端_口袋里のInit的博客-程序员秘密

ESP8266一共有三种角色/工作模式,分别是:1.STA (客户端模式)2.AP (接入点模式)3.STA+AP (两种模式共存)客户端模式就是作为设备(client)连接区域网内路由,接入点模式即是作为路由(sever),允许其他设备连接ESP8266.第三种即是同时扮演两种角色。与蓝牙模块相似,esp8266也需要进行AT指令设置。下面进行具体操作:1. 接线连接CH340转TT...

element UI 单选框设置默认选中值_elementui单选框默认选中_马优晨的博客-程序员秘密

如上图所示,需要给单选 加上默认值代码如下view<el-form-item label="可见" prop="locked" > <el-radio-group v-model="actionFormData.locked"> <el-radio :label="0">显示...

开博第一篇 往后余生,唯愿你幸福_虎帅(土家儿郎)的博客-程序员秘密

开博第一篇--------十年相思伊人去,QQ不在微信来我想轻轻的问候你一声忙碌中的你过得还好吗其实我过的不好但我希望你过得好没有你的日子其实我活的很累但我希望你活得轻松没有你的日子其实我活得很痛苦但我希望你很幸福没有你的日子对我来说是灰蒙蒙的我放不下你每天每夜想你看到你上线看到你下线看到你空间你的照片还有简短的留言你的心情为什么总是那么好我很诧异也许...

MFC CString 操作指南_mfc cstring %10s_B_H_L的博客-程序员秘密

通过阅读本文你可以学习如何有效地使用 CString。   CString 是一种很有用的数据类型。它们很大程度上简化了MFC中的许多操作,使得MFC在做字符串操作的时候方便了很多。不管怎样,使用CString有很多特殊的技巧,特别是对于纯C背景下走出来的程序员来说有点难以学习。这篇文章就来讨论这些技巧。   使用CString可以让你对字符串的操作更加直截了当。这篇文章不是 CString 的完

[转载]详细解说STL排序(sort)------这篇博文在一道题上救了我o_0_weixin_30448603的博客-程序员秘密

详细解说 STL 排序(Sort)作者Winter原文地址:http://www.cppblog.com/mzty/archive/2005/12/15/1770.html详细解说 STL 排序(Sort)0 前言: STL,为什么你必须掌握1 STL提供的Sort 算法1.1 所有sort算法介绍1.2 sort 中的比较函数1....

C#处理JSON数据_啊拉丁的鱼的博客-程序员秘密

每次写博客,第一句话都是这样的:程序员很苦逼,除了会写程序,还得会写博客!当然,希望将来的一天,某位老板看到此博客,给你的程序员职工加点薪资吧!因为程序员的世界除了苦逼就是沉默。我眼中的程序员大多都不爱说话,默默承受着编程的巨大压力,除了技术上的交流外,他们不愿意也不擅长和别人交流,更不乐意任何人走进他们的内心!   最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学...

推荐文章

热门文章

相关标签