#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图片部件进阶:用lv_img_set_pivot和lv_img_set_angle实现仪表盘指针动画
本文详细介绍了如何利用LVGL的`lv_img_set_pivot`和`lv_img_set_angle`函数实现仪表盘指针动画。通过设置旋转中心点、创建平滑角度动画以及性能优化技巧,开发者可以在嵌入式设备上打造专业级的动态UI效果。文章还提供了完整的仪表盘实现代码和常见问题解决方案,帮助开发者快速掌握LVGL图片旋转技术。
lvgl8.2 img 图片显示
1. lvgl 图片显示源 为了提供良好的图片显示灵活性,所以显示图像的来源可以是以下三种 代码中的一个变量(一个带有像素颜色数据的 C 数组)。 存储在外部的文件(比如 SD 卡)。 带有符号的文本。 2. 内部图片 对于源码内部图片(将图片转换为图片数组)想要将 PNG,JPG 或 BMP 格式的图像生成像素颜色数据数组,这需要使用专门的图片转换工具,刚好 lvgl 官方也为我们提供了这样的工具,该工具为网页版本,所以需要联网在线使用。具体样式和使用方法如下图所示。 具体链接:https
LVGL8.3图像控件lv_img实战:从C数组到文件加载,手把手教你搞定嵌入式UI图片显示
本文详细介绍了LVGL8.3中`lv_img`控件的实战应用,涵盖从C数组到文件加载的嵌入式UI图片显示全攻略。通过基础概念解析、图像源选择对比、STM32+SPI Flash完整示例及高级应用技巧,帮助开发者高效实现嵌入式系统的图像显示与优化。
LVGL8.3 --lv_img 图像
图像是在flash中(以数组形式)或外部以文件形式显示图像的基本对象。图像也可以显示符号(LV_SYMBOL_…)。使用图像解码器接口,还可以支持自定义图像格式。
别再乱选格式了!LVGL图片转换工具(lv_img_conv)保姆级使用指南,从BMP到C数组一次搞定
本文详细介绍了LVGL图像转换工具(lv_img_conv)的使用指南,从BMP到C数组的转换过程,帮助开发者解决嵌入式UI开发中的图像资源处理问题。文章涵盖了环境搭建、颜色格式选择、Alpha通道预处理、内存优化及自动化批处理等实用技巧,适用于STM32等嵌入式平台。
告别在线依赖:5分钟快速搭建LVGL专属图片转换工具(基于lv_img_conv)
本文介绍了如何基于lv_img_conv工具快速搭建LVGL专属图片转换工具,实现完全离线的图片格式转换。通过详细的安装配置指南和实战操作示例,帮助开发者高效处理嵌入式UI开发中的图片资源,特别适合网络受限或数据安全要求高的场景。
LVGL学习笔记 21 - 图像Image
图像是显示来自闪存(作为数组)或来自文件的图像的基本对象。
Lvgl库8.1部分学习记录
lv_img_set_src是LVGL(Light and Versatile Graphics Library)中用于设置图片源的函数。这个函数允许你为一个图像对象设置一个新的图像源,可以是一个二进制数组(存储在内存中的图像数据),也可以是一个文件路径(例如,使用LVGL的文件系统支持从SD卡或Flash中加载图像)。在上述两个例子中,img1是一个图像对象,我们分别为其设置了一个新的图片源。第一个例子中图片源是一个文件路径,第二个例子中图片源是一个二进制数组。
LVGL中LV_IMG_DECLARE的使用方法(自定义显示图片)【LVGL系列】
本文主要讲LV_IMG_DECLARE的使用方法
LVGL lv_img控件原理与嵌入式图像显示实战
lv_img 是 LVGL 中用于图像显示的核心控件,其本质是解耦图像数据源、渲染逻辑与布局行为的抽象层。它支持内存数组、图标字体和文件路径三种图像源模式,分别对应静态资源、矢量图标与动态加载等不同工程需求。在原理层面,lv_img 通过图像描述符(lv_img_dsc_t)定义尺寸、颜色格式与像素数据,结合自动尺寸适配、平铺偏移与样式混合(如 img_recolor 和 img_opa)实现灵活的视觉控制。其技术价值在于显著降低 GUI 资源冗余、提升主题一致性与状态反馈能力,并支撑启动画面、状态指示、背
富芮坤fr8008gp lvgl图片:lv_img_conv生成bin文件格式;在代码中直接引用图片;合并成一个bin给代码引用;LvglImgTool转换图片lvgl_image生成C文件
富芮坤fr8008gp lvgl图片:lv_img_conv生成bin文件格式;直接把图片放到代码钟引用
lv_img_conv:将图像轻松转换为 LVGL 格式
lv_img_conv:将图像轻松转换为 LVGL 格式 项目介绍 lv_img_conv 是一个开源项目,旨在为开发者提供一种便捷的方式,将图像文件转换为适合在 LVGL(Light and Versatile Graphics Library)中使用的格式。LVGL 是一个开源的嵌入式图形库,广泛用于嵌入式系统和物联网设备。lv_img_conv 的出现,使得图像转换过程更加高效,开发者可以快...
英飞凌功率MOSFET SPICE 瞬态仿真不收敛问题解决(基于TINA)
英飞凌功率MOSFET SPICE仿真容易出现不收敛问题,这个对于IGBT和SIC的管子应该是一样的,在瞬态仿真分析中,出现如下图所示的报错,Convergence problem。spice是为线性电路设计的,例如运算放大器、线性电源等,不是专门仿真开关电路的。在瞬态仿真时,仿真器是要不断迭代求解的,开关快速的跳变,容易在迭代式出现不收敛的问题。,由于时间步长减少,会消耗更多的计算机内存,如果运行多次内存消耗过大,会报“Out of memory”.解决方法是:报错工程,重启软件,内存重新计算。
LVGL当你直接操作显存时需要临时创建一个obj来模拟脏区,要用lv_img_create而不是lv_obj_create
lv_img是专门用于显示像素数据的控件,内部有处理图片数据的逻辑它会关联一个图像源(比如一个像素缓冲区),负责把这段像素数据渲染到屏幕上。所以当你直接操作显存(或者说显存映射的缓冲区)时,创建一个lv_img对象,能让 LVGL 知道这个区域是“图片”并且需要刷新。而lv_obj是 LVGL 的基础对象,只是一个容器和布局元素,没有任何“显示像素数据”的能力创建的对象本身没有内容,它不能直接绑定像素数据,也不会去处理像素缓冲区刷新。这意味着你直接操作显存,lv_obj。
《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];//将光标移动到...
轨迹规划——带抛物线过渡的直线插补
带抛物线过渡的直线插补
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。文章包含环境配置、旋转技术、颜色变换及实战案例,帮助开发者提升嵌入式系统的视觉体验。
基于555定时器的D类功放设计:从PWM原理到无反馈电路实践
D类功放(数字功放)是一种高效率的音频放大技术,其核心原理是脉冲宽度调制(PWM)。它将输入的模拟音频信号转换为一系列高速开关的脉冲,通过控制功率开关管(如MOSFET)的通断,再经低通滤波器还原放大后的音频。相比传统AB类功放,其转换效率通常超过90%,显著降低了热能损耗。这项技术在追求高能效和小型化的现代音频设备中价值凸显,广泛应用于有源音箱、汽车音响和便携式设备。本文聚焦于一种独特的实现方案:以经典的555定时器芯片为核心,构建一个无整体负反馈的D类功放。通过剖析其PWM调制器、FET电压-电流转换级
LVGL图片部件(lv_img)高级应用:动态效果与性能优化实战
本文深入探讨LVGL图片部件(lv_img)的高级应用,重点解析动态效果实现与性能优化策略。通过实战案例展示图片旋转、缩放、着色等动态效果,并提供内存管理、渲染优化、缓存机制等关键性能提升技巧,帮助开发者在嵌入式UI中高效使用图片部件。
手把手教你解决CentOS sshd启动报错:从权限问题到目录缺失的全套解决方案
本文提供了一套完整的CentOS SSH服务启动故障排查与修复方案。针对sshd启动报错,从systemd日志分析、sshd -t配置测试入手,详细解决了私钥文件权限过宽(如0644错误)和权限分离目录缺失等典型问题,并附带了扩展排查清单,帮助运维人员系统性地定位和解决连接故障。
Wi-Fi物理帧间隔概念简介
物理帧间隔概念简介。
单片机基础知识--LVGL学习-lv_img_set_src()
lvgl.hobjlv_imgsrc作用:动态修改图片控件显示的图像源,运行时切换图片。
【Zephyr电源与功耗专题】13_PMU电源驱动介绍
本文介绍的PMU芯片包含2路DCDC和6路LDO,在Zephyr实时操作系统下实现了完整的电源管理解决方案。
关于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)
FATFS挂载多个存储设备(2):功能配置及功能测试
本文介绍了基于FATFS文件系统实现多存储设备挂载的方法,包含底层设备驱动函数编写、功能配置、功能测试。
android 蓝牙通讯demo
android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。
LVGL控件篇:图片部件(lv_img)
我们自己制作精美的GUI界面的时候,加入一张我们自己需要的图片,可以放我们的GUI界面看起来更加的美观,我们LVGL中,可以轻松的实现加入一张图片,图片部件可用于显示图片,其图片源可以是C语言数组格式的文件、二进制的.bin文件以及图标字体。值得注意的是,图片部件要显示 BMPJPEG等格式的图片,则必须经过解码。图片部件的组成。
jdk-8u144-linux-x64.tar.gz.
该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包
381



被折叠的 条评论
为什么被折叠?



