LVGL-lv_img

LVGL--图片部件(lv_img) 图片部件可以用于图片显示,功能界面优化,背景优化等。 阅读详情
#include "gui_user.h"

static void obj_event_cb(lv_obj_t * obj, lv_event_t event);
static void slider_event_cb(lv_obj_t * obj, lv_event_t event);
static void btn_event_cb(lv_obj_t * obj, lv_event_t event);
static lv_style_t style_beep_icon;
static lv_obj_t *image_beep;



static void obj_event_cb(lv_obj_t * obj, lv_event_t event)
{
	switch (event)
	{
	case LV_EVENT_DELETE:
		gui_hal_beep_duty_cycle(0);
		gui_hal_beep_switch(0);
		//printf("obj delete\n");
		break;
	default:
		break;
	}
}


lv_obj_t * app_beep_create(lv_obj_t *parent,void *user_data)
{
	(void)user_data;

	static lv_style_t style_label;

	lv_obj_t *obj = lv_app_common_int(lv_scr_act(), "BEEP");
	lv_obj_set_event_cb(obj, obj_event_cb);

	lv_obj_t *btn = lv_btn_create(obj,NULL);
	lv_obj_set_size(btn, 100, 100);
	lv_obj_align(btn, obj, LV_ALIGN_IN_TOP_MID, 0, 75);
	lv_btn_set_toggle(btn,true);
	lv_obj_set_event_cb(btn, btn_event_cb);
	lv_btn_set_style(btn, LV_BTN_STYLE_REL, &lv_style_transp);
	lv_btn_set_style(btn, LV_BTN_STYLE_PR, &lv_style_btn_ina);
	lv_btn_set_style(btn, LV_BTN_STATE_TGL_REL, &lv_style_transp);
	lv_btn_set_style(btn, LV_BTN_STATE_TGL_PR, &lv_style_btn_ina);

	image_beep = lv_img_create(btn, NULL);
	lv_img_set_src(image_beep, &beep_open);
	lv_style_copy(&style_beep_icon, lv_img_get_style(image_beep, LV_IMG_STYLE_MAIN));
	style_beep_icon.image.color = LV_COLOR_GRAY;
	style_beep_icon.image.intense = 255;
	lv_img_set_style(image_beep, LV_IMG_STYLE_MAIN, &style_beep_icon);

	lv_obj_t *slider = lv_slider_create(obj,NULL);
	lv_obj_align(slider,obj,LV_ALIGN_IN_TOP_MID,0,200);
	lv_obj_set_event_cb(slider, slider_event_cb);

	lv_style_copy(&style_label,&lv_style_plain_color);
	if (gui_current_theme == THEME_NEMO)
		style_label.text.color = LV_COLOR_WHITE;
	else
		style_label.text.color = LV_COLOR_BLACK;
	style_label.text.font = &gb2312_puhui16;
	lv_obj_t *label = lv_label_create(obj, NULL);
	lv_label_set_text(label,"打开测试即可,勿长时间打开");
	lv_obj_align(label, obj, LV_ALIGN_IN_TOP_MID, -130, 250);
	lv_label_set_style(label, LV_LABEL_STYLE_MAIN, &style_label);

	return obj;
}

static void slider_event_cb(lv_obj_t * obj, lv_event_t event)
{
	uint8_t value = 0;
	if (event == LV_EVENT_VALUE_CHANGED)
	{
		value = lv_slider_get_value(obj);
		gui_hal_beep_duty_cycle(value);
		//printf("value:%d\n", value);
	}
}

static void btn_event_cb(lv_obj_t * obj, lv_event_t event)
{
	uint32_t color = 0;
	if (event == LV_EVENT_VALUE_CHANGED)
	{
		if (lv_btn_get_state(obj) == LV_BTN_STATE_TGL_REL)
		{
			printf("LV_BTN_STATE_TGL_REL\n");
			/* open beep */
			gui_hal_beep_switch(1);
			//printf("LV_BTN_STATE_TGL_REL\n");
			//style_beep_icon.image.color = LV_COLOR_BLUE;
			style_beep_icon.image.intense = 0;		/* 重新着色的不透明度设置为0,就是原来的颜色 */
			lv_img_set_style(image_beep, LV_IMG_STYLE_MAIN, &style_beep_icon);
		}
		else if (lv_btn_get_state(obj) == LV_BTN_STATE_REL)
		{	
			printf("LV_BTN_STATE_REL\n");
			/* close beep */
			gui_hal_beep_switch(0);
			//printf("LV_BTN_STATE_TGL_REL\n");
			style_beep_icon.image.color = LV_COLOR_GRAY;
			style_beep_icon.image.intense = 255;
			lv_img_set_style(image_beep, LV_IMG_STYLE_MAIN, &style_beep_icon);
		}

	}
}

LVGL基础篇-显示图片 void lv_img_set_src(lv_obj_t * obj, const void * src)函数 lv_img_decoder_get_info(src, &header);void lv_img_set_src(lv_obj_t * obj, const void * src) 设置图片数据源。需要先使用LV_IMG_DECLARE(xxx) 声明要lv_img_dsc_t 类型的图像结构。_LV_LL_READ实际是通过宏定义的方式遍历调用解码器列表回调函数。 阅读详情

相关推荐

LVGL图片部件进阶:用lv_img_set_pivot和lv_img_set_angle实现仪表盘指针动画

本文详细介绍了如何利用LVGL的`lv_img_set_pivot`和`lv_img_set_angle`函数实现仪表盘指针动画。通过设置旋转中心点、创建平滑角度动画以及性能优化技巧,开发者可以在嵌入式设备上打造专业级的动态UI效果。文章还提供了完整的仪表盘实现代码和常见问题解决方案,帮助开发者快速掌握LVGL图片旋转技术。

weixin_30838873的博客 381

lvgl8.2 img 图片显示

1. lvgl 图片显示源 为了提供良好的图片显示灵活性,所以显示图像的来源可以是以下三种 代码中的一个变量(一个带有像素颜色数据的 C 数组)。 存储在外部的文件(比如 SD 卡)。 带有符号的文本。 2. 内部图片 对于源码内部图片(将图片转换为图片数组)想要将 PNG,JPG 或 BMP 格式的图像生成像素颜色数据数组,这需要使用专门的图片转换工具,刚好 lvgl 官方也为我们提供了这样的工具,该工具为网页版本,所以需要联网在线使用。具体样式和使用方法如下图所示。 具体链接:https

zhbi98 的技术 Blogs 3万+

LVGL8.3图像控件lv_img实战:从C数组到文件加载,手把手教你搞定嵌入式UI图片显示

本文详细介绍了LVGL8.3中`lv_img`控件的实战应用,涵盖从C数组到文件加载的嵌入式UI图片显示全攻略。通过基础概念解析、图像源选择对比、STM32+SPI Flash完整示例及高级应用技巧,帮助开发者高效实现嵌入式系统的图像显示与优化。

weixin_30520015的博客 240

LVGL8.3 --lv_img 图像

图像是在flash中(以数组形式)或外部以文件形式显示图像的基本对象。图像也可以显示符号(LV_SYMBOL_…)。使用图像解码器接口,还可以支持自定义图像格式。

smicd的博客 5573

别再乱选格式了!LVGL图片转换工具(lv_img_conv)保姆级使用指南,从BMP到C数组一次搞定

本文详细介绍了LVGL图像转换工具(lv_img_conv)的使用指南,从BMP到C数组的转换过程,帮助开发者解决嵌入式UI开发中的图像资源处理问题。文章涵盖了环境搭建、颜色格式选择、Alpha通道预处理、内存优化及自动化批处理等实用技巧,适用于STM32等嵌入式平台。

weixin_29195615的博客 412

告别在线依赖:5分钟快速搭建LVGL专属图片转换工具(基于lv_img_conv)

本文介绍了如何基于lv_img_conv工具快速搭建LVGL专属图片转换工具,实现完全离线的图片格式转换。通过详细的安装配置指南和实战操作示例,帮助开发者高效处理嵌入式UI开发中的图片资源,特别适合网络受限或数据安全要求高的场景。

weixin_30632089的博客 249

LVGL学习笔记 21 - 图像Image

图像是显示来自闪存(作为数组)或来自文件的图像的基本对象。

pq的博客 8224

Lvgl库8.1部分学习记录

lv_img_set_src是LVGL(Light and Versatile Graphics Library)中用于设置图片源的函数。这个函数允许你为一个图像对象设置一个新的图像源,可以是一个二进制数组(存储在内存中的图像数据),也可以是一个文件路径(例如,使用LVGL的文件系统支持从SD卡或Flash中加载图像)。在上述两个例子中,img1是一个图像对象,我们分别为其设置了一个新的图片源。第一个例子中图片源是一个文件路径,第二个例子中图片源是一个二进制数组。

weixin_46930685的博客 2392

LVGL中LV_IMG_DECLARE的使用方法(自定义显示图片)【LVGL系列】

本文主要讲LV_IMG_DECLARE的使用方法

qq_52308536的博客 2470

LVGL lv_img控件原理与嵌入式图像显示实战

lv_img 是 LVGL 中用于图像显示的核心控件,其本质是解耦图像数据源、渲染逻辑与布局行为的抽象层。它支持内存数组、图标字体和文件路径三种图像源模式,分别对应静态资源、矢量图标与动态加载等不同工程需求。在原理层面,lv_img 通过图像描述符(lv_img_dsc_t)定义尺寸、颜色格式与像素数据,结合自动尺寸适配、平铺偏移与样式混合(如 img_recolor 和 img_opa)实现灵活的视觉控制。其技术价值在于显著降低 GUI 资源冗余、提升主题一致性与状态反馈能力,并支撑启动画面、状态指示、背

weixin_36001279的博客 73

富芮坤fr8008gp lvgl图片:lv_img_conv生成bin文件格式;在代码中直接引用图片;合并成一个bin给代码引用;LvglImgTool转换图片lvgl_image生成C文件

富芮坤fr8008gp lvgl图片:lv_img_conv生成bin文件格式;直接把图片放到代码钟引用

cheng___yi的博客 2054

lv_img_conv:将图像轻松转换为 LVGL 格式

lv_img_conv:将图像轻松转换为 LVGL 格式 项目介绍 lv_img_conv 是一个开源项目,旨在为开发者提供一种便捷的方式,将图像文件转换为适合在 LVGL(Light and Versatile Graphics Library)中使用的格式。LVGL 是一个开源的嵌入式图形库,广泛用于嵌入式系统和物联网设备。lv_img_conv 的出现,使得图像转换过程更加高效,开发者可以快...

gitblog_01134的博客 941

英飞凌功率MOSFET SPICE 瞬态仿真不收敛问题解决(基于TINA)

英飞凌功率MOSFET SPICE仿真容易出现不收敛问题,这个对于IGBT和SIC的管子应该是一样的,在瞬态仿真分析中,出现如下图所示的报错,Convergence problem。spice是为线性电路设计的,例如运算放大器、线性电源等,不是专门仿真开关电路的。在瞬态仿真时,仿真器是要不断迭代求解的,开关快速的跳变,容易在迭代式出现不收敛的问题。,由于时间步长减少,会消耗更多的计算机内存,如果运行多次内存消耗过大,会报“Out of memory”.解决方法是:报错工程,重启软件,内存重新计算。

miaoxiaokeji的博客 2294

LVGL当你直接操作显存时需要临时创建一个obj来模拟脏区,要用lv_img_create而不是lv_obj_create

lv_img是专门用于显示像素数据的控件,内部有处理图片数据的逻辑它会关联一个图像源(比如一个像素缓冲区),负责把这段像素数据渲染到屏幕上。所以当你直接操作显存(或者说显存映射的缓冲区)时,创建一个lv_img对象,能让 LVGL 知道这个区域是“图片”并且需要刷新。而lv_obj是 LVGL 的基础对象,只是一个容器和布局元素,没有任何“显示像素数据”的能力创建的对象本身没有内容,它不能直接绑定像素数据,也不会去处理像素缓冲区刷新。这意味着你直接操作显存,lv_obj。

cykaw2590的博客 365

《C语言小游戏之贪吃蛇程序代码》

//为广大编程游戏爱好者提供一个参考的游戏源代码#include<stdio.h>#include<conio.h>#include<windows.h>#include<time.h>#define framex 5#define framey 5#define wide 20#define high 20int i,j,a[2];//将光标移动到...

qq_42052821的博客 2万+

轨迹规划——带抛物线过渡的直线插补

带抛物线过渡的直线插补

doudou2weiwei的博客 1984

LVGL图片旋转与变色实战:手把手教你用lv_img_set_angle和lv_obj_set_style_img_recolor打造动态UI

本文详细介绍了如何利用LVGL库实现嵌入式GUI中的图片旋转与变色效果,通过`lv_img_set_angle`和`lv_obj_set_style_img_recolor`函数打造动态UI。文章包含环境配置、旋转技术、颜色变换及实战案例,帮助开发者提升嵌入式系统的视觉体验。

weixin_30412167的博客 381

基于555定时器的D类功放设计:从PWM原理到无反馈电路实践

D类功放(数字功放)是一种高效率的音频放大技术,其核心原理是脉冲宽度调制(PWM)。它将输入的模拟音频信号转换为一系列高速开关的脉冲,通过控制功率开关管(如MOSFET)的通断,再经低通滤波器还原放大后的音频。相比传统AB类功放,其转换效率通常超过90%,显著降低了热能损耗。这项技术在追求高能效和小型化的现代音频设备中价值凸显,广泛应用于有源音箱、汽车音响和便携式设备。本文聚焦于一种独特的实现方案:以经典的555定时器芯片为核心,构建一个无整体负反馈的D类功放。通过剖析其PWM调制器、FET电压-电流转换级

weixin_30162121的博客 221

LVGL图片部件(lv_img)高级应用:动态效果与性能优化实战

本文深入探讨LVGL图片部件(lv_img)的高级应用,重点解析动态效果实现与性能优化策略。通过实战案例展示图片旋转、缩放、着色等动态效果,并提供内存管理、渲染优化、缓存机制等关键性能提升技巧,帮助开发者在嵌入式UI中高效使用图片部件。

v6b7n8m9q0的博客 643

手把手教你解决CentOS sshd启动报错:从权限问题到目录缺失的全套解决方案

本文提供了一套完整的CentOS SSH服务启动故障排查与修复方案。针对sshd启动报错,从systemd日志分析、sshd -t配置测试入手,详细解决了私钥文件权限过宽(如0644错误)和权限分离目录缺失等典型问题,并附带了扩展排查清单,帮助运维人员系统性地定位和解决连接故障。

weixin_29248611的博客 152

Wi-Fi物理帧间隔概念简介

物理帧间隔概念简介。

1042484520@qq.com(邮箱) 1778

单片机基础知识--LVGL学习-lv_img_set_src()

lvgl.hobjlv_imgsrc作用:动态修改图片控件显示的图像源,运行时切换图片。

qq_43582136的博客 248

【Zephyr电源与功耗专题】13_PMU电源驱动介绍

本文介绍的PMU芯片包含2路DCDC和6路LDO,在Zephyr实时操作系统下实现了完整的电源管理解决方案。

zero的博客 842

关于lvgl “lv_img_dsc_t”结构体使用的疑问、并行刷新图片思路

但是发现只有前面两张数据是正常的,后面显示的图片大致也可以看出整体样貌,但是会有一点一点的白色,后面我尝试把current_idx_bg改成9,跟需要显示的图片张数一致,就正常了;我创建了lv_img_dsc_t类型的一个数组变量lv_img_dsc_t bg_layer_image_descs[current_idx_bg];current_idx_bg大小为2,然后遍历显示9张数据,通过不断的切换current_idx_bg(0,1,0,1)去显示遍历好的新数据(0,1,2,3,4,5,6,7,8)

CCTV_H的博客 847

FATFS挂载多个存储设备(2):功能配置及功能测试

本文介绍了基于FATFS文件系统实现多存储设备挂载的方法,包含底层设备驱动函数编写、功能配置、功能测试。

kevin1499的博客 2585

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

LVGL控件篇:图片部件(lv_img)

我们自己制作精美的GUI界面的时候,加入一张我们自己需要的图片,可以放我们的GUI界面看起来更加的美观,我们LVGL中,可以轻松的实现加入一张图片,图片部件可用于显示图片,其图片源可以是C语言数组格式的文件、二进制的.bin文件以及图标字体。值得注意的是,图片部件要显示 BMPJPEG等格式的图片,则必须经过解码。图片部件的组成。

m0_74676415的博客 6021

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

上一篇: LVGL-lv_chart
下一篇: LVGL——lv_gauge 仪表盘
lbaihao
博客等级 码龄18年 603粉丝 420原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值