- 博客(78)
- 资源 (25)
- 收藏
- 关注
原创 LVGL实现一个简易画图板
因为工作需要用LVGL实现了一个简易的画图板。LVGL版本:8.2主要功能有画图,选择画笔颜色,设置画笔宽度,画图板清空。
2025-04-02 16:02:30
134
原创 LVGL V8自定义实现radio button
这几天由于开发任务的需要,需要自定义实现一个radio button的功能,所以通过研究button添加LV_OBJ_FLAG_CHECKABLE属性实现了一个简单的radio button,下面直接上代码。
2023-04-04 15:49:57
1832
原创 获取嵌入式Linux设备下的触摸设备节点
这两天在搞嵌入式设备下的触摸屏,有一个需求是动态获取触摸设备,废话不说直接上代码:#include <stdio.h>#include <sys/types.h>#include <dirent.h>#include <linux/input.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <string
2022-04-14 12:11:34
3640
原创 LVGL V8学习之键盘按键样式重绘(二)
这一篇继续研究一下基于btnmatrix的键盘按键重绘,是对上一篇LVGL V8学习之键盘按键样式重绘(一)的代码的优化,还是通过codeblock来模拟代码的运行,代码如下:// 按键矩阵的事件回调函数static void btnmatrix_event_callback(lv_event_t * event){ if (event == NULL) { printf("[%s:%d] event is NULL\n", __FUNCTION__, __LINE
2022-03-07 18:12:00
4841
1
原创 LVGL V8学习之进度条(bar控件)
这一篇来研究下LVGL V8下进度条(bar控件)的使用,还是通过codeblock来模拟代码的运行// bar对象动画回调函数static void obj_bar_anim_exec_callback(void * bar, int32_t value){ if (bar != NULL) { lv_bar_set_value((lv_obj_t *)bar, value, LV_ANIM_ON); // 设置进度条对象的值
2022-03-07 15:11:48
4920
5
原创 LVGL V8学习之colorwheel色轮
这一篇来研究下LVGL V8下colorwheel色轮的使用,这个色轮是HSV样式的,下面的代码通过创建色轮对象,然后添加对象事件处理,移动旋钮,显示对应的颜色和RGB值还是通过codeblock来模拟代码的运行,代码如下:// 事件回调函数static void colorwheel_event_callback(lv_event_t * event){ if (event == NULL) { printf("[%s:%d] event is NULL\n"
2022-01-05 10:32:58
2116
6
原创 LVGL V8下png图片缩放显示
这几天在研究LVGL V8下显示png图片和缩放问题1、软件硬件环境SSD202D平台Linux系统2、相关依赖库相关依赖的库主要包含lv_lib_png和lodepng下载链接:lv_lib_png3、相关代码这里主要是演示从文件加载显示png图片,并缩放显示,主要是使用lv_img_set_zoom这个接口实现缩放显示,以下是关键代码// img对象设置png图片自适应显示static void lv_obj_img_png_set_zoom(lv_
2021-11-15 20:25:20
8943
7
原创 SSD202D平台使用libjpeg和lodepng将jpg图片转换成rgb888格式的png图片
今天在研究SSD202D平台使用libjpeg和lodepng将jpg图片转换成rgb88格式的png图片,分享一下研究的结果:1、准备工作下载libjpeg:libjpeg这里使用的jpegsrc.v9.tar.gz下载lodepng:lodepng2、相关代码jpeg_transfer.h#ifndef _JPEG_TRANSFER_H#define _JPEG_TRANSFER_H#ifdef __cplusplusextern "C"{#endif.
2021-11-11 18:15:42
1991
原创 SSD202D平台使用lodepng生成png图片
这两天在研究SSD202D平台上的png图片显示,下面分享 一下使用lodepng生成png图片1、准备工作下载lodepng源码:https://github.com/lvandeve/lodepnglodepng官网:LodePNG2、相关代码:lodepng_demo.c#include <stdio.h>#include <stdlib.h>#include <string.h>#include <stdint.h>#
2021-11-11 17:41:12
608
原创 渐进式jpg转换成基线式 jpg
最近在搞SSD202D平台的jpeg图片显示,发现progressive jpeg无法显示,于是就用libjpeg库progressive jpeg转换成baseline jpg首先说下这两种格式的区别:PEG有两种存储格式:baseline和progressive。Baseline JPEG 会在数据可用时,一行一行自上而下显示。Progressive JPEG会先显示模糊图片,然后逐渐清晰。两种格式有相同尺寸以及图像数据,他们的扩展名也是相同的,唯一的区别是二者显示的方式不同。B..
2021-11-09 16:33:49
1308
原创 LVGL V8学习之键盘按键样式重绘(一)
这一篇研究一下基于btnmatrix的键盘按键重绘,还是通过codeblock来模拟代码的运行,代码如下:static const char * kb_map[] ={ "1","2", "3","\n", "4", "5", "6", "\n", "7", "8", "9" ,"\n", ".","0",LV_SYMBOL_BACKSPACE,""};static void textarea_event_callback(lv_event_t * event){ if (
2021-09-07 18:30:23
3038
3
原创 LVGL8之自定义密码输入键盘
这一篇研究一下自定义密码输入键盘,还是通过codeblock来模拟代码的运行,代码如下:#include <stdio.h>#include <string.h>#include "lvgl/lvgl.h"#include "lv_gui_password_keyboard.h"static lv_obj_t *pwd_main_cont = NULL; // 密码输入界面的容器static lv_obj_t *hint_label = NULL; // 密码提示
2021-09-03 16:53:02
5967
3
原创 LVGL8的窗口切换方式
LVGL8实现两个窗口的切换方式:方法一:切换到窗口2时,删除窗口1的容器,这样可以删除窗口1下的所有子对象,这种方式适用于运存较小的设备方法二:显示窗口1之前给窗口2的容器设置LV_OBJ_FLAG_HIDDEN隐藏属性,显示窗口2之前给窗口1的容器设置LV_OBJ_FLAG_HIDDEN隐藏属性还是通过codeblock来模拟代码的运行,代码如下:#define HIDDEN_WIN (0)static lv_obj_t *win1_contanier = NULL;static
2021-08-27 19:36:02
15733
17
原创 LVGL8学习之msgbox
这一篇来演示一下lvgl8下msgbox的使用,还是通过codeblock来模拟代码的运行,代码如下:static void msgbox_event_callback(lv_event_t * event){ lv_event_code_t code = lv_event_get_code(event); lv_obj_t * msgbox = lv_event_get_current_target(event); if ((code == LV_EVENT_VALUE_
2021-08-27 17:30:03
2787
原创 LVGL8学习之Grid(简单网格布局)
这一篇来学习一下简单的网格布局grid,主要的步骤如下:(1)创建对象,给对象添加网格布局还是通过codeblock来模拟代码的运行,代码如下:void lv_layout_simple_grid(){ // 定义行和列描述符的数组,数组的最后一个元素必须是LV_GRID_TEMPLATE_LAST static lv_coord_t col_dsc[] = {70, 70, 70, LV_GRID_TEMPLATE_LAST}; // 3行,分别为:70,70,70 像
2021-08-27 15:29:42
4639
3
原创 LVGL8学习之flex grow(弹性增长)
这一篇来学习一下flex grow(弹性增长),还是通过codeblock来模拟代码的运行,代码如下:void lv_demonstrate_flex_grow(){ lv_obj_t * cont = lv_obj_create(lv_scr_act()); // 基于屏幕创建一个cont容器对象 if (cont == NULL) { return; } lv_obj_set_size(cont, 400, 220); // 设置对象大小
2021-08-27 14:37:41
2769
原创 LVGL8制作简易时钟
通过这两天对LVGL8的部分控件和样式的学习,自己制作了一个简易时钟,可显示时间,日期,星期,用到的主要有样式,布局等对象typedef struct _lv_clock{ lv_obj_t *time_label; // 时间标签 lv_obj_t *date_label; // 日期标签 lv_obj_t *weekday_label; // 星期标签}lv_clock_t;static void clock
2021-08-27 13:20:10
11826
11
原创 LVGL8学习之Flex布局2
这一篇来学习Flex布局的把项目按行包裹,且让他们周围的控件平均。(Arrange items in rows with wrap and even spacing),还是通过codeblock来模拟代码的运行,代码如下:void lv_flex_layout_test2(){ static lv_style_t style; lv_style_init(&style); // 初始化style lv_style_set_layout(&style, LV_L
2021-08-26 20:29:42
2355
原创 LVGL8学习之row and a column layout with flexbox
这一篇来学习一下基于flexbox(柔性盒子)简单行和列布局,还是通过codeblock来模拟代码的运行,可设置layout对象内部的水平和竖直填充,以及布局内各item之间的间隔填充代码如下:void lv_flex_layout_test(){ lv_obj_t * container_row1 = lv_obj_create(lv_scr_act()); // 创建一个对象container_row1 if (container_row1 == NULL) {
2021-08-26 17:07:31
2323
原创 LVGL8学习之扩展当前主题(Extending the current theme)
这一篇来学习一下如何扩展当前主题,还是通过codeblock来模拟代码的运行,代码如下:static lv_style_t g_style_btn;/*当已经添加基本主题的样式添加新样式时,调用次函数*/static void new_theme_apply_cb(lv_theme_t * th, lv_obj_t * obj){ LV_UNUSED(th); if(lv_obj_check_type(obj, &lv_btn_class)) {
2021-08-26 14:42:09
1682
原创 LVGL8学习之add styles to parts and states
这一篇来学习一下add styles to parts and states,还是通过codeblock来模拟代码的运行,代码如下:void lv_add_style_to_parts_and_states_test(){ static lv_style_t style_indic; lv_style_init(&style_indic); lv_style_set_bg_color(&style_indic, lv_palette_lighten(LV_P
2021-08-26 14:33:18
472
原创 LVGL8学习之local styles
这一篇来学习一下给对象添加local style,还是通过codeblock来模拟代码的运行,代码如下:void lv_local_style_test(){ static lv_style_t style; lv_style_init(&style); lv_style_set_bg_color(&style, lv_palette_main(LV_PALETTE_GREEN)); lv_style_set_border_color(&sty
2021-08-26 14:23:48
712
原创 LVGL8学习之multiple styles
这一篇来学一下multiple styles,多种样式的组合使用代码如下:void lv_multiple_style_test(){ static lv_style_t style_base; lv_style_init(&style_base); lv_style_set_bg_color(&style_base, lv_palette_main(LV_PALETTE_LIGHT_BLUE)); lv_style_set_border_colo
2021-08-26 12:07:03
627
原创 LVGL8学习之transition
这一篇来学一下transition默认情况下,当一个对象改变状态时新的状态和属性会被立即设置。但是,使用transition转换,可以在状态更改时播放动画。例如:按下Button,其背景色可以播放超过300ms的动画颜色。转换的参数存储在样式中。可以设置:(1)转换的时间(2)开始转换前的延时时间(3)动画的路径(4)动画的属性可以为每个状态定义转换属性。例如:在默认状态下设置500ms的转换时间将意味着当对象转到默认状态时,将应用500ms的转换时间。在按下状态下设置100ms的转
2021-08-26 12:04:04
1373
原创 LVGL8学习之Line Style
这一篇来学习一下LineStyle的使用,还是通过codeblock来模拟代码的运行,代码如下:void lv_line_style_test(){ static lv_style_t style; lv_style_init(&style); // 样式初始化 lv_style_reset(&style); // 重置样式 lv_style_set_line_color(&style, lv_palette_main(LV_PALETT.
2021-08-26 11:33:22
810
原创 LVGL8学习之Text Style
这一篇来学习一下Text Style的使用,还是通过codeblock来模拟代码的运行,代码如下:void lv_text_style_test(){ static lv_style_t style; lv_style_init(&style); // 样式初始化 lv_style_reset(&style); // 重置样式 lv_style_set_radius(&style, 5); // 设置样式圆角 lv_style_se
2021-08-26 11:29:07
1574
原创 LVGL8学习之Image Styles
这一篇来学习一下Image Style的使用,还是通过codeblock来模拟代码的运行,代码如下:void lv_image_style_test(){ static lv_style_t style; LV_IMG_DECLARE(img_cogwheel_argb); // 声明图片变量 lv_style_init(&style); // 样式初始化 lv_style_reset(&style); // 重置样式 lv_style_.
2021-08-25 20:05:51
1390
原创 LVGL8学习之Shadow Styles
这一篇来学习一下Shadow Style的使用,还是通过codeblock来模拟代码的运行,代码如下:void lv_shadow_style_test(){ static lv_style_t style; lv_style_init(&style); lv_style_reset(&style); // 重置样式 lv_style_set_radius(&style, 5); // 设置样式圆角 lv_style_set_bg_
2021-08-25 18:39:09
691
原创 LVGL8学习之Outline Styles
这一篇来学习一下Outline Style的使用,还是通过codeblock来模拟代码的运行,代码如下:void lv_outline_style_test(){ static lv_style_t style; lv_style_init(&style); // 初始化样式 lv_style_reset(&style); // 重置样式 lv_style_set_radius(&style, 5); // 设置样式圆角 lv_st
2021-08-25 18:23:53
658
原创 LVGL8学习之Border Styles
这一篇来学习一下Border Style的使用,还是通过codeblock来模拟代码的运行,代码如下:void border_style_test(){ static lv_style_t style; lv_style_init(&style); // 初始化样式 lv_style_reset(&style); // 重置样式 lv_style_set_radius(&style, 10); // 设置样式圆角弧度 lv_styl
2021-08-25 18:05:35
1369
原创 LVGL8学习之Background Styles
这一篇学习一下Background Styles,代码如下:void background_style_test(){ static lv_style_t style; lv_style_init(&style); lv_style_reset(&style); // 重置样式 lv_style_set_radius(&style, 5); // 设置样式的圆角弧度 lv_style_set_bg_opa(&style, L
2021-08-25 17:46:46
2680
原创 LVGL8学习之Size styles
这一篇学习一下Size styles代码如下:void lv_size_style_test(){ static lv_style_t style; lv_style_init(&style); lv_style_reset(&style); // 重置按钮样式 lv_style_set_radius(&style, 5); // 设置样式圆角弧度 lv_style_set_width(&style, 150); //
2021-08-25 17:31:25
737
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人