canvas with chroma keying for little vGL"/>
transparent canvas with chroma keying for little vGL
-
定义画布尺寸
#define TRANSPARENT_CANVAS_WIDTH 50 #define TRANSPARENT_CANVAS_HIGHT 50
-
创建一个button
lv_btn_create(lv_scr_act(), NULL);
-
定义画布缓冲buffer,注意不能是局部的
static lv_color_t cbuf[LV_CANVAS_BUF_SIZE_INDEXED_1BIT(TRANSPARENT_CANVAS_WIDTH,TRANSPARENT_CANVAS_HIGHT)];
-
创建画布对象
lv_obj_t* canvas = lv_canvas_create(lv_scr_act(), NULL);
-
设置关联画布缓冲buffer
lv_canvas_set_buffer(canvas, cbuf, TRANSPARENT_CANVAS_WIDTH, TRANSPARENT_CANVAS_HIGHT, LV_IMG_CF_INDEXED_1BIT);
-
设置透明和红色2个调色盘
lv_canvas_set_palette(canvas, 0, LV_COLOR_TRANSP);lv_canvas_set_palette(canvas, 1, LV_COLOR_RED);
-
定义颜色变量C0,C1
lv_color_t c0;lv_color_t c1;c0.full = 0;c1.full = 1;
-
绘制C0,C1
lv_canvas_fill_bg(canvas, c1);uint32_t x, y;for (y = 10; y < 30; y++){for (x = 5; x < 20; x++){lv_canvas_set_px(canvas, x, y, c0);}}
-
完整的实现
#define TRANSPARENT_CANVAS_WIDTH 50
#define TRANSPARENT_CANVAS_HIGHT 50
void transparent_canvas_demo(void) {lv_btn_create(lv_scr_act(), NULL);static lv_color_t cbuf[LV_CANVAS_BUF_SIZE_INDEXED_1BIT(TRANSPARENT_CANVAS_WIDTH,TRANSPARENT_CANVAS_HIGHT)];lv_obj_t* canvas = lv_canvas_create(lv_scr_act(), NULL);lv_canvas_set_buffer(canvas, cbuf, TRANSPARENT_CANVAS_WIDTH, TRANSPARENT_CANVAS_HIGHT, LV_IMG_CF_INDEXED_1BIT);lv_canvas_set_palette(canvas, 0, LV_COLOR_TRANSP);lv_canvas_set_palette(canvas, 1, LV_COLOR_RED);lv_color_t c0;lv_color_t c1;c0.full = 0;c1.full = 1;lv_canvas_fill_bg(canvas, c1);uint32_t x, y;for (y = 10; y < 30; y++) {for (x = 5; x < 20; x++) {lv_canvas_set_px(canvas, x, y, c0);}}
}
-
调用transparent_canvas_demo函数,编译运行
更多推荐
transparent canvas with chroma keying for little vGL
发布评论