-
定義畫布尺寸
#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函數,編譯運行