当前位置:网站首页>LVGL 8.2 Draw label with gradient color
LVGL 8.2 Draw label with gradient color
2022-07-04 13:07:00 【仙剑情缘】
事件处理回调函数
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); // 获取对象产生的事件码
lv_obj_t* obj = lv_event_get_target(e); // 获取产生事件的对象
lv_opa_t* mask_map = lv_event_get_user_data(e); // 获取事件对象关联的用户数据
if (code == LV_EVENT_COVER_CHECK) {
// LV_EVENT_COVER_CHECK事件
lv_event_set_cover_res(e, LV_COVER_RES_MASKED); // 设置LV_COVER_RES_MASKED
}
else if (code == LV_EVENT_DRAW_MAIN_BEGIN) {
// LV_EVENT_DRAW_MAIN_BEGIN事件
lv_draw_mask_map_init(&m, &obj->coords, mask_map);
mask_id = lv_draw_mask_add(&m, NULL); // 添加mask绘制参数
}
else if (code == LV_EVENT_DRAW_MAIN_END) {
// LV_EVENT_DRAW_MAIN_END事件
lv_draw_mask_free_param(&m); // 释放mask绘制参数占用的内存
lv_draw_mask_remove_id(mask_id); // 移除mask绘制参数
}
}
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数组
/*Create a "8 bit alpha" canvas and clear it*/
lv_obj_t* canvas = lv_canvas_create(lv_scr_act()); //创建画布
lv_canvas_set_buffer(canvas, mask_map, MASK_WIDTH, MASK_HEIGHT, LV_IMG_CF_ALPHA_8BIT); //设置画布数据buffer
lv_canvas_fill_bg(canvas, lv_color_black(), LV_OPA_TRANSP); //画布填充背景色为黑色,透明度为LV_OPA_TRANSP
/*Draw a label to the canvas. The result "image" will be used as mask*/
lv_draw_label_dsc_t label_dsc; //绘制描述符变量定义
lv_draw_label_dsc_init(&label_dsc);
label_dsc.color = lv_color_white(); //白色
label_dsc.align = LV_TEXT_ALIGN_CENTER; // LV_TEXT_ALIGN_CENTER对齐方式
lv_canvas_draw_text(canvas, 5, 5, MASK_WIDTH, &label_dsc, "Text with gradient"); //画布上绘制文本
/*The mask is reads the canvas is not required anymore*/
lv_obj_del(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()); // 创建对象
lv_obj_set_size(grad, MASK_WIDTH, MASK_HEIGHT); // 设置大小
lv_obj_center(grad); // 居中对齐
lv_obj_set_style_bg_color(grad, lv_color_hex(0xff0000), 0); // 设置背景
lv_obj_set_style_bg_grad_color(grad, lv_color_hex(0x0000ff), 0); //设置渐变颜色值
lv_obj_set_style_bg_grad_dir(grad, LV_GRAD_DIR_HOR, 0);//设置沿水平方向颜色渐变
lv_obj_add_event_cb(grad, add_mask_event_cb, LV_EVENT_ALL, mask_map);//添加所有事件
}
运行效果

边栏推荐
- Abnormal value detection using shap value
- 商業智能BI財務分析,狹義的財務分析和廣義的財務分析有何不同?
- How to operate and invest games on behalf of others at sea
- Transplant tinyplay for imx6q development board QT system
- MySQL stored procedure exercise
- Test evaluation of software testing
- PyTorch的自动求导机制详细解析,PyTorch的核心魔法
- 聊聊保证线程安全的 10 个小技巧
- 卷积神经网络经典论文集合(深度学习分类篇)
- 递增的三元子序列[贪心训练]
猜你喜欢

Why should Base64 encoding be used for image transmission

Codeforce:c. sum of substrings

LVGL 8.2 text shadow

Pandora IOT development board learning (RT thread) - Experiment 3 button experiment (learning notes)

C # WPF realizes the real-time screen capture function of screen capture box

Nowcoder rearrange linked list

【信息检索】分类和聚类的实验

聊聊保证线程安全的 10 个小技巧

Nowcoder reverse linked list

(1)性能调优的标准和做好调优的正确姿势-有性能问题,上HeapDump性能社区!
随机推荐
为什么图片传输要使用base64编码
SqlServer函数,存储过程的创建和使用
Solutions aux problèmes d'utilisation de l'au ou du povo 2 dans le riz rouge k20pro MIUI 12.5
【信息检索】链接分析
LVGL 8.2 List
商业智能BI财务分析,狭义的财务分析和广义的财务分析有何不同?
ML:SHAP值的简介、原理、使用方法、经典案例之详细攻略
sql优化之查询优化器
關於miui12.5 紅米k20pro用au或者povo2出現問題的解决辦法
How to operate and invest games on behalf of others at sea
递增的三元子序列[贪心训练]
gin集成支付宝支付
[MySQL from introduction to proficiency] [advanced chapter] (IV) MySQL permission management and control
AI与生命科学
开发中常见问题总结
富文本编辑:wangEditor使用教程
去除重复字母[贪心+单调栈(用数组+len来维持单调序列)]
ML之shap:基于boston波士顿房价回归预测数据集利用Shap值对LiR线性回归模型实现可解释性案例
Query optimizer for SQL optimization
scratch古堡历险记 电子学会图形化编程scratch等级考试三级真题和答案解析2022年6月