-
-
Notifications
You must be signed in to change notification settings - Fork 165
Canvas Class
moononournation edited this page Jun 2, 2021
·
3 revisions
Arduino_GFX provide various canvas class, sometimes it call framebuffer, for draw buffering on complicated presentation. The display only require refresh once after canvas draw finish and call flush(). It can reduce the display flicking substantially but requires more RAM.
Arduino_DataBus *bus = create_default_Arduino_DataBus();
Arduino_GFX *output_display = new Arduino_ST7789(bus, TFT_RST, 0 /* rotation */, true /* IPS */);
240x320 resolution only works for ESP32 with PSRAM
Arduino_GFX *gfx = new Arduino_Canvas(240 /* width */, 320 /* height */, output_display);
- mask_level: 0-2, larger mask level mean less color variation but can have faster index mapping
Arduino_GFX *gfx = new Arduino_Canvas_Indexed(240 /* width */, 320 /* height */, output_display,
0 /* output_x */, 0 /* output_y */, MAXMASKLEVEL /* mask_level */);
R1G1B1, 8 colors
Arduino_GFX *gfx = new Arduino_Canvas_3bit(240 /* width */, 320 /* height */, output_display,
0 /* output_x */, 0 /* output_y */);
Arduino_GFX *gfx = new Arduino_Canvas_Mono(240 /* width */, 320 /* height */, output_display,
0 /* output_x */, 0 /* output_y */);
#include <Arduino_GFX_Library.h>
// 16-bit color Canvas (240x240 resolution requires 116 kB RAM)
Arduino_G *output_display = new Arduino_GC9A01(bus, TFT_RST, 0 /* rotation */, true /* IPS */);
Arduino_GFX *gfx = new Arduino_Canvas(240 /* width */, 240 /* height */, output_display);
void setup()
{
gfx->begin();
#ifdef TFT_BL
pinMode(TFT_BL, OUTPUT);
digitalWrite(TFT_BL, HIGH);
#endif
}
void loop()
{
// insert gfx complicated draw here
gfx->flush();
}