当前位置:网站首页>LVGL 8.2 Draw label with gradient color
LVGL 8.2 Draw label with gradient color
2022-07-04 14:35:00 【Fairy sword love】
Event handling callback function
static void add_mask_event_cb(lv_event_t* e)
{
static lv_draw_mask_map_param_t m;
static int16_t mask_id;
lv_event_code_t code = lv_event_get_code(e); // Get the event code generated by the object
lv_obj_t* obj = lv_event_get_target(e); // Get the object that generated the event
lv_opa_t* mask_map = lv_event_get_user_data(e); // Get the user data associated with the event object
if (code == LV_EVENT_COVER_CHECK) {
// LV_EVENT_COVER_CHECK event
lv_event_set_cover_res(e, LV_COVER_RES_MASKED); // Set up LV_COVER_RES_MASKED
}
else if (code == LV_EVENT_DRAW_MAIN_BEGIN) {
// LV_EVENT_DRAW_MAIN_BEGIN event
lv_draw_mask_map_init(&m, &obj->coords, mask_map);
mask_id = lv_draw_mask_add(&m, NULL); // add to mask Drawing parameters
}
else if (code == LV_EVENT_DRAW_MAIN_END) {
// LV_EVENT_DRAW_MAIN_END event
lv_draw_mask_free_param(&m); // Release mask Memory occupied by drawing parameters
lv_draw_mask_remove_id(mask_id); // remove mask Drawing parameters
}
}
Draw label with gradient color
#define MASK_WIDTH 100
#define MASK_HEIGHT 45
static void lv_example_label_4(void)
{
/* Create the mask of a text by drawing it to a canvas*/
static lv_opa_t mask_map[MASK_WIDTH * MASK_HEIGHT]; // mask map Array
/*Create a "8 bit alpha" canvas and clear it*/
lv_obj_t* canvas = lv_canvas_create(lv_scr_act()); // Create a canvas
lv_canvas_set_buffer(canvas, mask_map, MASK_WIDTH, MASK_HEIGHT, LV_IMG_CF_ALPHA_8BIT); // Set canvas data buffer
lv_canvas_fill_bg(canvas, lv_color_black(), LV_OPA_TRANSP); // The canvas is filled with black , Transparency is LV_OPA_TRANSP
/*Draw a label to the canvas. The result "image" will be used as mask*/
lv_draw_label_dsc_t label_dsc; // Draw descriptor variable definitions
lv_draw_label_dsc_init(&label_dsc);
label_dsc.color = lv_color_white(); // white
label_dsc.align = LV_TEXT_ALIGN_CENTER; // LV_TEXT_ALIGN_CENTER Alignment mode
lv_canvas_draw_text(canvas, 5, 5, MASK_WIDTH, &label_dsc, "Text with gradient"); // Draw text on the canvas
/*The mask is reads the canvas is not required anymore*/
lv_obj_del(canvas); // Delete canvas
/* Create an object from where the text will be masked out. * Now it's a rectangle with a gradient but it could be an image too*/
lv_obj_t* grad = lv_obj_create(lv_scr_act()); // Create objects
lv_obj_set_size(grad, MASK_WIDTH, MASK_HEIGHT); // Set size
lv_obj_center(grad); // Align center
lv_obj_set_style_bg_color(grad, lv_color_hex(0xff0000), 0); // Set the background
lv_obj_set_style_bg_grad_color(grad, lv_color_hex(0x0000ff), 0); // Set the gradient color value
lv_obj_set_style_bg_grad_dir(grad, LV_GRAD_DIR_HOR, 0);// Set the color gradient along the horizontal direction
lv_obj_add_event_cb(grad, add_mask_event_cb, LV_EVENT_ALL, mask_map);// Add all events
}
Running effect
边栏推荐
- RK1126平台OSD的实现支持颜色半透明度多通道支持中文
- 失败率高达80%,企业数字化转型路上有哪些挑战?
- [information retrieval] link analysis
- MySQL triggers
- Scratch Castle Adventure Electronic Society graphical programming scratch grade examination level 3 true questions and answers analysis June 2022
- 【算法leetcode】面试题 04.03. 特定深度节点链表(多语言实现)
- LVGL 8.2 Line
- (1) The standard of performance tuning and the correct posture for tuning - if you have performance problems, go to the heapdump performance community!
- 92. (cesium chapter) cesium building layering
- 潘多拉 IOT 开发板学习(RT-Thread)—— 实验3 按键实验(学习笔记)
猜你喜欢
What is the difference between Bi financial analysis in a narrow sense and financial analysis in a broad sense?
Nowcoder reverse linked list
leetcode:6110. The number of incremental paths in the grid graph [DFS + cache]
ML之shap:基于boston波士顿房价回归预测数据集利用shap值对XGBoost模型实现可解释性案例
迅为IMX6Q开发板QT系统移植tinyplay
Practical puzzle solving | how to extract irregular ROI regions in opencv
Test process arrangement (3)
Stm32f1 and stm32subeide programming example -max7219 drives 8-bit 7-segment nixie tube (based on GPIO)
Alcohol driving monitoring system based on stm32+ Huawei cloud IOT design
Explain of SQL optimization
随机推荐
Transplant tinyplay for imx6q development board QT system
【MySQL从入门到精通】【高级篇】(五)MySQL的SQL语句执行流程
架构方面的进步
Leetcode 61: 旋转链表
R language ggplot2 visualization: gganimate package creates dynamic line graph animation (GIF) and uses transition_ The reveal function displays data step by step along a given dimension in the animat
【信息检索】分类和聚类的实验
统计php程序运行时间及设置PHP最长运行时间
Popular framework: the use of glide
MySQL的存储过程练习题
A collection of classic papers on convolutional neural networks (deep learning classification)
The game goes to sea and operates globally
基于51单片机的超声波测距仪
First experience of ViewModel
Test evaluation of software testing
Data warehouse interview question preparation
92. (cesium chapter) cesium building layering
Industrial Internet has greater development potential and more industry scenarios
[cloud native] how can I compete with this database?
Classify boost libraries by function
redis 日常笔记