You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.3 KiB
C
45 lines
1.3 KiB
C
#include "../../lv_examples.h"
|
|
#if LV_USE_CANVAS && LV_BUILD_EXAMPLES
|
|
|
|
#define CANVAS_WIDTH 50
|
|
#define CANVAS_HEIGHT 50
|
|
|
|
/**
|
|
* Create a transparent canvas with Chroma keying and indexed color format (palette).
|
|
*/
|
|
void lv_example_canvas_2(void)
|
|
{
|
|
/*Create a button to better see the transparency*/
|
|
lv_btn_create(lv_scr_act());
|
|
|
|
/*Create a buffer for the canvas*/
|
|
static lv_color_t cbuf[LV_CANVAS_BUF_SIZE_INDEXED_1BIT(CANVAS_WIDTH, CANVAS_HEIGHT)];
|
|
|
|
/*Create a canvas and initialize its palette*/
|
|
lv_obj_t * canvas = lv_canvas_create(lv_scr_act());
|
|
lv_canvas_set_buffer(canvas, cbuf, CANVAS_WIDTH, CANVAS_HEIGHT, LV_IMG_CF_INDEXED_1BIT);
|
|
lv_canvas_set_palette(canvas, 0, LV_COLOR_CHROMA_KEY);
|
|
lv_canvas_set_palette(canvas, 1, lv_palette_main(LV_PALETTE_RED));
|
|
|
|
/*Create colors with the indices of the palette*/
|
|
lv_color_t c0;
|
|
lv_color_t c1;
|
|
|
|
c0.full = 0;
|
|
c1.full = 1;
|
|
|
|
/*Red background (There is no dedicated alpha channel in indexed images so LV_OPA_COVER is ignored)*/
|
|
lv_canvas_fill_bg(canvas, c1, LV_OPA_COVER);
|
|
|
|
/*Create hole on the canvas*/
|
|
uint32_t x;
|
|
uint32_t y;
|
|
for(y = 10; y < 30; y++) {
|
|
for(x = 5; x < 20; x++) {
|
|
lv_canvas_set_px_color(canvas, x, y, c0);
|
|
}
|
|
}
|
|
|
|
}
|
|
#endif
|