技术标签: LVGL
标签本身是使用的最多的一个空间,主要作用是用来显示文本信息的.支持换行,图标字体,部分文本重绘色,长文本显示等.
API接口很多,在原子的资料里也写得很清楚,只罗列一些我常用的API.
lv_label_set_text_fmt
使用方法和
printf
很接近,示例:
lv_label_set_text_fmt(now_label, "%d", (val_last));
,需要注意的是,这个文本内容是动态文本,真正显示内容的内存空间是lvgl自己分配的.
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
lv_label_set_recolor(lv_obj_t * label, bool en)
文本重绘色功能是否打开.
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里的样式包含大量属性,对于一些控件来说,必然会存在一些冗余而用不到的属性.
如下所示,图来自于原子的资料,一共分为5大块.
body是背景的属性,比如绘制按钮,属性框等.
main_color
和grad_color
分别为背景板的上半部分颜色和下半部分颜色,如果两者颜色不等,LVGL内部会对做出一个上半部分到下半部分的颜色渐变效果.radius
设定背景板的圆角半径.opa
设定该面板的透明属性,当透明度比较低的时候可以看到后面的内容.board
设定面板边框属性.
part
是绘制哪几条边框.opa
是边框透明度(0-255).shadow
设定阴影效果
type
阴影的类型,是四周全部阴影还是只是底部阴影(只有两个选择).padding
内边距,四个方向距离对象的距离.
inner
是容器内每个对象的间隔,和字体的间隔不一样.以下图为例.
途中黄色部分是阴影效果.
绿色部分是边框效果.
红黑色部分为main_color
和grad_color
效果.
四个角的弧度为radius
设定的效果.
文本的属性,各个成员变量也比较好理解.说一下下面两个.
letter_spcae
是字母间的间隔line_space
是行与行之间的间隔图像的属性,这个要记录一下.
color
和intense
指定混合颜色和混合强度,将图片的每一个像素点与指定颜色按照指定强度混合产生新的像素点数据.
intense
属性取值范围0-255.
opa
图像的透明度,取值范围0-255.
备注: 以上图举例,屏幕中间的闹钟图片当intense
为200时,比较偏向于红色,当intense
为1时,基本无限趋近于白色.
属性从字面意思就可以得知.说一下rounded
,为1代表末尾用圆角绘制.如下图.
这个比较简单,当为1时,子对象无法从父对象继承样式.为0时,子对象如果样式为NULL,则从父对象继承样式.
在LVGL里面内置了13个系统自带样式.效果如下所示.
备注: 这些系统内置样式的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);
前三句是图片的显示,后面的就是图片的样式修改,主要用到了拷贝和设定样式.一般这两个也是最常用的函数.效果如下.
可以很清晰的看到,一个红色闹钟图标.
1.IL基本介绍1.1 CLR介绍在介绍IL之前,先说一说CLR。CLR的全称Commen Language Runtime 公共语言运行时。因为CLR的存在,使得多语言开发成为可能。下面给出一张图片,解释支持CLR的几种语言的关系。从上面的图片可以看出,CLR其实是不关心开发人员用哪一种语言写源代码。这意味着在选择编程语言时,应该选择最容易表达自己意图的语言。可用任何一种语言开发...
1.在Maven中引入easypoi<!-- easypoi的支持 --><dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-base</artifactId> <version>3.2.0</ver...
1、简介RISC-V 由Berkeley开发,完全开源的通用ISA,除了ISA外Berkeley还配套实现了RISC-V SOC开发框架chipyard,包括基于chisel语言SOC生成器,SOC FPGA仿真平台friesim,RISC-V应用开发编译工具链等工具。大多说论文提出的加速器,比如GPU,使用了独立的指令集,它们有着和CPU虚拟空间独立的内存空间,因此需要使用加速器ISA彻底修改应用,并且无法利用CPU的虚拟环境。RSIC-V可以灵活的拓展加速器并且不会牺牲CPU的虚拟环境。2、流片
老样子,先看图,文末贴代码~myeclipse版的android studio 版的 是不是很简短啊?那么我贴一下源码吧~/** * AI核心代码 价值1个亿~ * @author BillyLu * */public class AiMain { public static void main(String[] args) { Scanner sc...
report Z_OOALV.type-pools: icon.class lcl_event_receiver definition deferred.tables: sflight.data: gi_index_rows type
问题分析可以分为n是偶数和奇数两种情况n是偶数,那么分为两部分1-n/2,n/2+1-n,后半部分减去n/2的值,就和前半部分一样了n是奇数,可以分为两部分1-n/2,n/2+1-n,后半部分减去n/2+1的值,就变成了0和1-n/2的值所以可以写出递推式f(n)=f(n/2)+1#include <iostream>#include <cstdio>usi...
本地通知的基本目的是使应用程序能够通知用户,它为他们提供了一些信息例如,当应用程序没有在前台运行时,通知用户一个消息或即将到来的约会。本地通知大多是基于时间的,如果触发就会在通知中心显示并呈现给用户。
6.2.1 cv::getAffineTransform6.2.1.1 仿射变换(1)一个任意的仿射变换都能表示为乘以一个矩阵(线性变换)接着再加上一个向量(平移)。所以,我们能够用仿射变换来表示:旋转(线性变换) 平移(向量加) 缩放操作(线性变换)仿射变换代表的是两幅图之间的联系。我们通常使用矩阵来表示仿射变换。 ...
一、引言 在现实生活中,有很多中介者模式的身影,例如QQ游戏平台,聊天室、QQ群和短信平台,这些都是中介者模式在现实生活中的应用,下面就具体分享下我对中介者模式的理解。二、 中介者模式的介绍2.1 中介者模式的定义 从生活中的例子可以看出,不论是QQ游戏还是QQ群,它们都是充当一个中间平台,QQ用户可以登录这个中间平台与其他QQ用户进行交流,如果没有这些中间平台,我们如果想与朋...
{-------------------------------------------------------------------------------ThecontentsofthisfilearesubjecttotheMozillaPublicLicenseVersion1.1(the"License");youmaynotusethisfil...
作为创始团队成员之一,廖浩均在 2017 年就正式加入了涛思数据,彼时整个团队才不过寥寥五个人,TDengine 也才诞生不久。作为一位毕业于中科院计算所的计算机应用技术专业博士,廖浩均为什么会决定从一家稳定的上市企业转移阵地到一家数据库初创公司?在进入涛思数据之后,他又见证和参与了 TDengine 的哪些改变与进步?立足当下展望未来,携手 TDengine,他会如何走好接下来的路?在对廖浩均的采访记录中,这些问题的答案也已经跃然纸上。......
Oracle对象教程:索引(Index)创建使用,索引:对数据库表中的某些列进行排序,便于提高查询效率。当我们在某本书中查找特定的章节内容时,可以先从书的目录着手,找到该章节所在的页码,然后快速的定位到该页。这种做法的前提是页面编号是有序的。如果页码无序,就只能从第一页开始,一页页的查找了。数据库中索引(Index)的概念与目录的概念非常类似。如果某列出现在查询的条件中,而该列的数据是无序的,查询...