合宙Air724UG LuatOS-Air LVGL API控件-图片 (Image)

图片 (Image)

image.png


图片IMG是用于显示图像的基本对象类型,图像来源可以是文件,或者定义的符号。

示例代码

-- 创建图片控件
img = lvgl.img_create(lvgl.scr_act(), nil)
-- 设置图片显示的图像
lvgl.img_set_src(img, "/lua/luatos.png")
-- 图片居中
lvgl.obj_align(img, nil, lvgl.ALIGN_CENTER, 0, 0)

创建

使用 lvgl.img_create 可以创建图像对象。

img = lvgl.img_create(lvgl.scr_act(), nil)

符号文字

图片控件显示的内容有两个来源,一个是来源文件的图片,还是有一个就是 符号文字。符号文字是一段特殊的字符串,LVGL内部会将这串特殊字符解析为图像显示,类似于 Emoji。符号文字名称需要用户在脚本层自行定义,例如"\xef\x80\x8c"代表的就是 OK按钮,可以通过脚本自行定义名称,方便识别。例如 OK 的标志就可以标记成 lvgl.SYMBOL_OK

我们可以打印下部分符号文件:

symble = {"\xef\x80\x81", "\xef\x80\x88", "\xef\x80\x8b", "\xef\x80\x8c","\xef\x80\x8d", "\xef\x80\x91", "\xef\x80\x93", "\xef\x80\x95","\xef\x80\x99", "\xef\x80\x9c", "\xef\x80\xa1", "\xef\x80\xa6","\xef\x80\xa7", "\xef\x80\xa8", "\xef\x80\xbe", "\xef\x8C\x84","\xef\x81\x88", "\xef\x81\x8b", "\xef\x81\x8c", "\xef\x81\x8d","\xef\x81\x91", "\xef\x81\x92", "\xef\x81\x93", "\xef\x81\x94","\xef\x81\xa7", "\xef\x81\xa8", "\xef\x81\xae", "\xef\x81\xb0","\xef\x81\xb1", "\xef\x81\xb4", "\xef\x81\xb7", "\xef\x81\xb8","\xef\x81\xb9", "\xef\x81\xbb", "\xef\x82\x93", "\xef\x82\x95","\xef\x83\x84", "\xef\x83\x85", "\xef\x83\x87", "\xef\x83\xa7","\xef\x83\xAA", "\xef\x83\xb3", "\xef\x84\x9c", "\xef\x84\xa4","\xef\x85\x9b", "\xef\x87\xab", "\xef\x89\x80", "\xef\x89\x81","\xef\x89\x82", "\xef\x89\x83", "\xef\x89\x84", "\xef\x8a\x87","\xef\x8a\x93", "\xef\x8B\xAD", "\xef\x95\x9A", "\xef\x9F\x82",
}local img = lvgl.img_create(cont, nil)
lvgl.cont_set_layout(cont, lvgl.LAYOUT_GRID)
for i=1, #symble doimg = lvgl.img_create(cont, nil)lvgl.img_set_src(img, symble[i])
end

符号标志.bmp

设置图片

图像文件同样是通过 lvgl.img_set_src 函数设置的,与符号标志不同的是需要传入图片路径。

lvgl.img_set_src(img, "/lua/png40.png")

鹦鹉.bmp

尺寸

调用 lvgl.img_set_auto_size 函数,将设置图像对象的大小自动设置为图像源的宽度和高度。 如果启用了自动调整大小,则在设置新文件时,对象大小将自动更改。以后,可以手动修改大小。默认情况下将启用自动调整大小。

lvgl.img_set_auto_size(image, true)

偏移

使用 lvgl.img_set_offset_x 和 lvgl.img_set_offset_y ,可以向显示的图像添加一些偏移。如果对象尺寸小于图像源尺寸,则很有用。

lvgl.img_set_offset_x(img, 10)
lvgl.img_set_offset_y(img, 10)

偏移.bmp


可以看到,这个偏移的显示效果跟我们想象的有点区别,它是类似于铺地板的效果。也可以利用 X 或 Y 偏移创建滚动图像的效果。

透明度

lvgl.img_set_src 虽然可以设置图像显示,但是直接显示的图片在 LuatOS-SoC 中是不支持透明度的,尽管PNG图像本身带有透明度信息。 如需显示透明图片,需要将PNG文件(JPG 和 BMP 格式本身不支持透明背景)在官网转化为 BIN 文件,转换方式如下:

file-read-6032.png

lvgl.img_set_src中直接传入转换完毕的 BIN 文件即可完成透明图片的显示,需要注意的是,转换完后的文件后缀名需为 .bin,此接口依靠后缀名识别文件格式显示。

重新着色

重新设置图片的颜色模式,主要函数有三个:

lvgl.obj_set_style_local_image_opa
lvgl.obj_set_style_local_image_recolor
lvgl.obj_set_style_local_image_recolor_opa

都是通过风格改变图片信息,可以让一张图片显示出不同的效果,可以用在图像处理,或者让图片显示不同状态。其中,obj_set_style_local_image_opa 是改变图片的透明度, 可以改变的数值为 0~255,可以取当中任意数值,也可以使用 LVGL 已经定义好的透明度数值。这里改变的是图片的整体透明度。

透明度数值
lvgl.OPA_00
lvgl.OPA_1025
lvgl.OPA_2051
lvgl.OPA_3076
lvgl.OPA_40102
lvgl.OPA_50127
lvgl.OPA_60153
lvgl.OPA_70178
lvgl.OPA_80204
lvgl.OPA_90229
lvgl.OPA_100255
lvgl.OPA_COVER255

我们来看看图片半透明的显示效果

lvgl.obj_set_style_local_image_opa(img, lvgl.IMG_PART_MAIN, lvgl.STATE_DEFAULT, 128)

半透明.bmp

lvgl.obj_set_style_local_image_recolor 是为图片添加一个类似于滤镜的效果。

首先来看下代码是怎样使用的:

lvgl.obj_set_style_local_image_recolor_opa(img, lvgl.IMG_PART_MAIN, lvgl.STATE_DEFAULT, 128)
lvgl.obj_set_style_local_image_recolor(img, lvgl.IMG_PART_MAIN, lvgl.STATE_DEFAULT, 0x00FF00)

绿到你发光.bmp


这样就得到了一只泛着绿光的鹦鹉,没错,这货是鹦鹉
lvgl.obj_set_style_local_image_recolor 设置颜色的模式是 RGB,根据数值可以设定不同颜色。
 

红光鹦鹉.bmp


根据透明度设置的数值,我们甚至可以得到一个 剪影

lvgl.obj_set_style_local_image_recolor_opa(img, lvgl.IMG_PART_MAIN, lvgl.STATE_DEFAULT, 255)
lvgl.obj_set_style_local_image_recolor(img, lvgl.IMG_PART_MAIN, lvgl.STATE_DEFAULT, 0x0000FF)

蓝色剪影.bmp

缩放

可以使用 lvgl.img_set_zoom(img, factor) 进行图像缩放, lvgl.IMG_ZOOM_NONE 是一个数值 256,代表默认大小。factor 设置为256表示图片不进行缩放,factor 设置为 512 表示图片放大一倍。同样128表示将图片缩小一倍。需要注意的是,这里只是更改了图片的大小显示,并没有更改控件的大小。

lvgl.img_set_zoom(img, 512)

放大一倍.bmp


看起来有些模糊,这是原先的图片素材放大了一倍的显示效果。

旋转

通过 lvgl.img_set_angle 可以对图片进行旋转,使用的单位是 角度值*10,方向是顺时针,也就是说, 900 就表示 90 度。下面我们对图片顺时针旋转 90 度。

lvgl.img_set_angle(img, 900)

旋转.bmp

API

lvgl.img_create

调用lvgl.img_create(par, copy)
功能创建一个图片对象
返回指向图片对象的指针
参数
par指向对象的指针, 它将是新键对象的父对象
copy指向图片对象的指针, 如果不为 nil, 则将从其复制新对象

lvgl.img_set_src

调用lvgl.img_set_src(img, data)
功能设置图片控件的显示内容
参数
img指向图片对象的指针
data图像显示的数据内容

lvgl.img_set_auto_size

调用lvgl.img_set_auto_size(img, en)
功能是否启动自动调整尺寸功能
参数
img指向图片对象的指针
entrue 启用尺寸自动调整,false 禁用尺寸自动调整

lvgl.img_set_offset_x

调用lvgl.img_set_offset_x(img, x)
功能设置图片内容的横向偏移
参数
img指向图片对象的指针
x图片的横向偏移

lvgl.img_set_offset_y

调用lvgl.img_set_offset_y(img, y)
功能设置图片内容的纵向偏移
参数
img指向图片对象的指针
y图片的纵向偏移

lvgl.img_set_angle

调用lvgl.img_set_angle(img, angle)
功能设置图片的旋转角度
参数
img指向图片对象的指针
angle图片的旋转角度

lvgl.img_set_pivot

调用lvgl.img_set_pivot(img, x, y)
功能设置图片的旋转点
参数
img指向图片对象的指针
x图片的旋转中心点 X 坐标
y图片的旋转中心点 Y 坐标

lvgl.img_set_zoom

调用lvgl.img_set_zoom(img, zoom)
功能设置图片的缩放
参数
img指向图片对象的指针
zoom图片的缩放系数,256 代表默认大小。

lvgl.img_set_antialias

调用lvgl.img_set_antialias(img, en)
功能是否启用图片的抗锯齿功能
参数
img指向图片对象的指针
entrue 启用, false 禁用

lvgl.img_get_auto_size

调用lvgl.img_get_auto_size(img)
功能获取当前是否启动自动调整尺寸
返回自动调整尺寸是否启动标志
参数
img指向图片对象的指针

lvgl.img_get_offset_x

调用lvgl.img_get_offset_x(img)
功能获取图片的 x 偏移
返回图片的 x 偏移
参数
img指向图片对象的指针

lvgl.img_get_offset_y

调用lvgl.img_get_offset_y(img)
功能获取图片的 y 偏移
返回图片的 y 偏移
参数
img指向图片对象的指针

lvgl.img_get_angle

调用lvgl.img_get_angle(img)
功能获取图片的旋转角度
返回图片的旋转角度
参数
img指向图片对象的指针

lvgl.img_get_zoom

调用lvgl.img_get_zoom(img)
功能获取图片的缩放系数
返回图片的缩放系数
参数
img指向图片对象的指针

lvgl.img_get_antialias

调用lvgl.img_get_antialias(img)
功能获取图片是否设置了抗锯齿
返回true 设置了抗锯齿, false 没有设置
参数
img指向图片对象的指针

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

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

相关文章

2023国赛数学建模C题思路代码 - 蔬菜类商品的自动定价与补货决策

# 1 赛题 在生鲜商超中,一般蔬菜类商品的保鲜期都比较短,且品相随销售时间的增加而变差, 大部分品种如当日未售出,隔日就无法再售。因此, 商超通常会根据各商品的历史销售和需 求情况每天进行补货。 由于商超销售的蔬菜…

中科驭数携DPU系列创新产品亮相2023服贸会

9月2日至6日,由商务部、北京市政府主办的2023年中国国际服务贸易交易会(简称“服贸会”)在北京举行。在电信、计算机和信息服务专题展馆,中科驭数等一批国家专精特新“小巨人”携最新数据处理器DPU亮相,展示了多项创新…

【LeetCode75】第五十题 无限集中的最小数字

目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 这是我们在LeetCode75里遇到的第二道设计类题目,难度比上一次的设计题目要难上一些。 题目假设我们拥有一个从1开始的无限集…

跨境电商产业链,服务商的“霸道”你见识过吗?(测评补单)

跨境电商行业的服务商众多,涉及到从前期培训和店铺注册准备到中期选品软件、营销服务、流量投放和支付等多个环节。然而,行业乱象也日益严重,出现了一些不良现象,如恶意竞争、高价要求、割韭菜等。 卖家在选择服务商时应谨慎&…

Matlab图像处理-最大类间方差阈值选择法(Otsu)

基本思想 最大类间方差阈值选择法又称为Otsu 算法,该算法是在灰度直方图的基础上用最小二乘法原理推导出来的,具有统计意义上的最佳分割阈值。它的基本原理是以最佳阈值将图像的灰度直方图分割成两部分,使两部分之间的方差取得最大值&#x…

win10/11安裝時 OOBE強制跳過登入Microsoft賬戶

Windows11官方正式版ISO,目前版本号为22621.963,微软维持每个月发布一次ISO的节奏。每周还会有一些补丁在线推送,目前更新到了22621.1105。同时,还有Beta和Dev通道推送预览版。Dev通道的更为激进还不稳定,目前版本号为…

安装SAPGUI 8.0

SAP_GUI_for_Windows_8.00_Comp.64\PRES1\GUI\Windows\Win64

苹果计划2024年AirPods引入新接口,后续升级体温测量、听力测试

据彭博社马克・古尔曼(Mark Gurman)报道,苹果公司计划在最早2024年为其旗舰无线耳机AirPods和AirPods Max引入USB-C端口,并试图将其所有基于Lightning接口的配件改用USB-C接口。 据古尔曼表示,AirPods Pro将率先改用新…

Docker部署Springboot项目

Docker部署Springboot项目 在学习的若依的过程中,想尝试学习使用Docker实现SpringBoot项目的部署,于是实践如下: 项目打包完成后,放到服务器的目录结构如下: cd / mkdir ruoyidockerfile文件内容 笔者这里是配置读取…

微信小程序的开发---tabBar的介绍

目录 一、tabBar的介绍 二、tabBar的6个组成部分 三、tabBar节点的配置项 四、tab项的配置选项 五、tabBar的使用 一、tabBar的介绍 tabBar是移动端应用常见的页面效果,用于实现多页面的快速切换。小程序中通常将其分为: (1)…

企业架构LNMP学习笔记3

服务器基本环境配置: 1、安装虚拟机,centos7.9 操作系统; 2、网络配置; 3、机器名FQDN设置; 4、DNS解析设置,本地hosts设置; 5、配置yum源环境; 6、vim安装配置; …

大麦订单生成 大麦订单购票成功截图生成

后台一键生成链接,后台管理 教程:解压源码,修改数据库config/Congig 不会可以看源码里有教程 下载程序:https://pan.baidu.com/s/16lN3gvRIZm7pqhvVMYYecQ?pwd6zw3

容器编排学习(一)k8s集群管理

一 Kubernetes 1 概述 就在Docker容器技术被炒得热火朝天之时,大家发现,如果想要将Docker应用于具体的业务实现,是存在困难的一一编排、管理和调度等各个方面,都不容易。于是,人们迫切需要一套管理系统&#xff0…

球谐函数实现环境光照漫反射实践

该文章以及代码主要来自 图形学论文解析与复现:【论文复现】An Efficient Representation for Irradiance Environment Maps 作者:Monica的小甜甜 与原文的不同: 对一些有问题的地方进行了修改添加了注释对有疑问的地方添加了疑问点引入了其…

【广州华锐互动】煤矿设备AR远程巡检系统实现对井下作业的远程监控和管理

煤矿井下作业环境复杂,安全隐患较多。传统的巡检方式存在诸多弊端,如巡检人员难以全面了解井下情况,巡检效率低下,安全隐患难以及时发现和整改等。为了解决这些问题,提高煤矿安全生产水平,越来越多的企业开…

win10系统配置vmware网络NAT模式

1,查看win10 IP地址:ipconfig 2, vmware设置:编辑>>虚拟网络编辑器>>点击添加网络(选择NAT模式) 3,虚拟机网络设置:点击VMware虚拟机>>设置>>网络适配器 4&#xff…

【autodl/linux配环境心得:conda/本地配cuda,cudnn及pytorch心得】-未完成

linux配环境心得:conda/本地配cuda,cudnn及pytorch心得 我们服务器遇到的大多数找不到包的问题一,服务器安装cuda和cudnn使用conda在线安装cuda和cudnn使用conda进行本地安装检查conda安装的cuda和cudnn本地直接安装cuda和cudnn方法一&#x…

【数据结构--顺序表】移除元素

题目描述&#xff1a; 代码实现&#xff1a; 1、指针实现 int removeElement(int* nums, int numsSize, int val) {int* dst nums, * src nums;int n1 0,n20;while (n1n2 < numsSize){if (*src ! val){*dst *src;dst;src;n1;//表示src走的步数}else{src;n2;//表示src走…

Matlab图像处理-迭代式阈值选择法

基本思想 迭代式阈值选择法的基本思想是&#xff1a;开始时&#xff0c;选择一个阈值作为初始估计值&#xff0c;然后按某种策略不断地改进这一估计值&#xff0c;直到满足给定的准则为止。在迭代过程中&#xff0c;关键之处在于选择什么样的阈值改进策略。好的阈值改进策略应…

游戏平台加盟该怎么做?需要准备什么?

游戏平台加盟是一种合作模式&#xff0c;允许个人或企业以加盟商的身份参与游戏平台&#xff0c;并从中获得一定的权益和收益。以下是一些步骤和需要准备的事项&#xff0c;来考虑如何进行游戏平台加盟&#xff1a; 步骤&#xff1a; 研究市场和平台&#xff1a;了解游戏市场和…