图片(lv_img)图像是从Flash(作为数组)或从外部作为文件显示的基本对象。图像也可以显示符号( LV_SYMBOL_...
)。
使用 图像解码器 接口,也可以支持自定义图像格式。
零件和样式
图像只有一个称为 LV_IMG_PART_MAIN
的主要部分,该部分使用典型的背景样式属性绘制背景矩形和图像属性。填充值用于使背景实际变大。 (它不会更改图像的实际大小,但仅在绘图期间应用大小修改)
用法
图片来源
为了提供最大的灵活性,图像的来源可以是:
- 代码中的变量(带有像素的C数组)。
- 外部存储的文件(例如SD卡上的文件)。
- 符号 文字。
要设置图像的来源,调用 lv_img_set_src(img, src)
。
要从PNG,JPG或BMP图像生成像素阵列,请使用 在线图像转换器工具 ,并使用其指针设置转换后的图像: lv_img_set_src(img1, &converted_img_var)
;要使变量在C文件中可见,需要使用 LV_IMG_DECLARE(converted_img_var)
进行声明。
要使用 外部文件 ,还需要使用在线转换器工具转换图像文件,但是现在应该选择二进制输出格式。还需要使用LVGL的文件系统模块,并为基本文件操作注册具有某些功能的驱动程序。进入文件系统以了解更多信息。要设置来自文件的图像,请使用 lv_img_set_src(img, "S:folder1/my_img.bin")
。
可以类似于 标签
_ 设置符号。在这种情况下,图像将根据样式中指定的字体呈现为文本。它可以使用轻量级的单色“字母”代替实际图像。可以设置符号,例如 lv_img_set_src(img1, LV_SYMBOL_OK)
。
标签作为图片
图像和标签有时用于传达相同的内容。例如,描述按钮的作用。因此,图像和标签可以互换。为了处理这些图像,甚至可以使用 LV_SYMBOL_DUMMY
作为文本的前缀来显示文本。例如, lv_img_set_src(img, LV_SYMBOL_DUMMY "Some text")
.
透明度
内部(可变)和外部图像支持2种透明度处理方法:
- Chrome keying – 具有
LV_COLOR_TRANSP
(lv_conf.h) 颜色的像素将是透明的。 - Alpha byte – 一个alpha字节被添加到每个像素。
调色板和Alpha指数
除了本色(RGB)颜色格式外,还支持以下格式:
- Indexed – 索引,图像具有调色板。
- Alpha indexed – Alpha索引,仅存储Alpha值。
可以在字体转换器中选择这些选项。要了解有关颜色格式的更多信息,请阅读 图像(images)
部分。
重新着色
根据像素的亮度,可以在运行时将图像重新着色为任何颜色。在不存储同一图像的更多版本的情况下,显示图像的不同状态(选中,未激活,按下等)非常有用。 可以通过在 LV_OPA_TRANSP
(不重新着色,值:0)和 LV_OPA_COVER
(完全重新着色,值:255)之间设置 img.intense
来启用该样式。默认值为 LV_OPA_TRANSP
,因此此功能被禁用。
自动调整尺寸
调用 lv_img_set_auto_size(image, true)
函数,将设置图像对象的大小自动设置为图像源的宽度和高度。 如果启用了自动调整大小,则在设置新文件时,对象大小将自动更改。以后,可以手动修改大小。如果图像不是屏幕,默认情况下将启用自动调整大小。
镶嵌
使用 lv_img_set_offset_x(img, x_ofs) `` 和 ``lv_img_set_offset_y(img, y_ofs)
,可以向显示的图像添加一些偏移。如果对象尺寸小于图像源尺寸,则很有用。使用offset参数,可以通过对x或y偏移量进行 动画 处理来创建 纹理图集 或“运行中的图像”效果。
转换
使用 lv_img_set_zoom(img, factor)
图像将被缩放。将 factor
设置为 256
或 LV_IMG_ZOOM_NONE
以禁用缩放。较大的值将放大图像(例如512倍),较小的值将缩小图像(例如 128
倍)。分数刻度也适用。例如: 281
为10%放大。
要旋转图像,请使用 lv_img_set_angle(img, angle)
。角度精度为0.1度,因此对于45.8°设置458。
默认情况下,旋转的枢轴点是图像的中心。可以使用 lv_img_set_pivot(img, pivot_x, pivot_y)
进行更改。 0;0是左上角。
可以使用 lv_img_set_antialias(img, true/false)
调整转换的质量。启用抗锯齿功能后,转换的质量更高,但速度较慢。
转换需要整个图像可用。因此,可以转换索引图像( LV_IMG_CF_INDEXED_...
),仅alpha图像( LV_IMG_CF_ALPHA_...
)或文件中的图像。换句话说,转换仅适用于存储为C数组的真彩色图像,或者自定义 图像解码器 返回整个图像。
注意,图像对象的真实坐标在变换期间不会改变。即 lv_obj_get_width/height/x/y()
将返回原始的非缩放坐标。
旋转
图像可以旋转
事件
默认情况下,禁用图像对象的单击,仅发送与非输入设备相关的常规事件。如果要捕获图像对象的所有一般事件,则应使用以下命令启用其单击: lv_obj_set_click(img, true)
了解有关 事件 的更多内容。
按键
对象类型不处理任何键。
了解有关 按键 的更多内容。
范例
图片来自于数组
展示的图片来自于变量
上述效果的示例代码:
给图像重新着色
给图像重新着色
上述效果的示例代码: