# Create a transparent canvas with Chroma keying and indexed color format (palette). CANVAS_WIDTH = 50 CANVAS_HEIGHT = 50 def bufsize(w, h, bits, indexed=False): """this function determines required buffer size depending on the color depth""" size = (w * bits // 8 + 1) * h if indexed: # + 4 bytes per palette color size += 4 * (2**bits) return size # Create a button to better see the transparency lv.btn(lv.scr_act()) # Create a buffer for the canvas cbuf = bytearray(bufsize(CANVAS_WIDTH, CANVAS_HEIGHT, 1, indexed=True)) # Create a canvas and initialize its the palette canvas = lv.canvas(lv.scr_act()) canvas.set_buffer(cbuf, CANVAS_WIDTH, CANVAS_HEIGHT, lv.img.CF.INDEXED_1BIT) # transparent color can be defined in lv_conf.h and set to pure green by default canvas.set_palette(0, lv.color_make(0x00, 0xFF, 0x00)) canvas.set_palette(1, lv.color_make(0xFF, 0x00, 0x00)) # Create colors with the indices of the palette c0 = lv.color_t() c1 = lv.color_t() c0.full = 0 c1.full = 1 # Transparent background canvas.fill_bg(c1) # Create hole on the canvas for y in range(10,30): for x in range(5, 20): canvas.set_px(x, y, c0)