#defineMASK_WIDTH100#defineMASK_HEIGHT45staticvoidlv_example_label_4(void){/* Create the mask of a text by drawing it to a canvas*/staticlv_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);//设置画布数据bufferlv_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);//添加所有事件}