pdf-icon

LCD

M5Core屏幕像素为320x240,以屏幕左上角为原点(0,0).

RGB565 Color

下方API使用RGB565颜色编码格式

颜色代码:

定义 16进制值 R G B
BLACK 0x0000 0 0 0
NAVY 0x000F 0 0 128
DARKGREEN 0x03E0 0 128 0
MAROON 0x7800 128 0 0
PURPLE 0x780F 128 0 128
OLIVE 0x7BE0 128 128 0
LIGHTGREY 0xC618 192 192 192
DARKGREY 0x7BEF 128 128 128
BLUE 0x001F 0 0 255
GREENYELLOW 0xB7E0 180 255 0
GREEN 0x07E0 0 255 0
YELLOW 0xFFE0 255 255 0
ORANGE 0xFDA0 255 180 0
PINK 0xFC9F 255 255 16
CYAN 0x07FF 0 255 255
DARKCYAN 0x03EF 0 128 128
RED 0xF800 255 0 0
MAGENTA 0xF81F 255 0 255
WHITE 0xFFFF 255 255 255

begin

函数原型:

void begin();

功能说明:

  • 初始化LCD屏幕。使用M5.begin()将在内部自动调用Lcd.begin()进行初始化。

传入参数:

  • null

返回值:

  • null

案例程序:

#include <M5Stack.h>

void setup() {
  M5.Lcd.begin();
}

void loop() {
}

sleep

函数原型:

void sleep();

功能说明:

  • LCD切换至休眠模式

传入参数:

  • null

返回值:

  • null

案例程序:

#include <M5Stack.h>

void setup() {
  M5.Lcd.begin();
  M5.Lcd.sleep();
}

void loop() {
}

clear

函数原型:

void clear()

功能说明:

  • 清空显示的内容。

传入参数:

  • null

返回值:

  • null

案例程序:

#include <M5Stack.h>

void setup() {
  M5.Lcd.begin();
  M5.Power.begin();
  M5.Lcd.fillScreen(RED);
  delay(1000);
  M5.Lcd.clear();
}

void loop() {
}

wakeup

函数原型:

void wakeup();

功能说明:

  • 从休眠模式唤醒, 恢复显示。

传入参数:

  • null

返回值:

  • null

案例程序:

#include <M5Stack.h>

void setup() {
    M5.Lcd.begin();
    M5.Power.begin();
    M5.Lcd.fillScreen(RED);
    delay(1000);
    M5.Lcd.sleep();
    delay(6000);
    M5.Lcd.wakeup();
}

void loop() {
}

hight

函数原型:

int16_t height(void);

功能说明:

  • 返回屏幕高度

传入参数:

  • null

返回值:

  • int16_t:
    • 屏幕高度px

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin(); 
  M5.Power.begin();
  M5.Lcd.print(M5.Lcd.height());
}

void loop() {
}

width

函数原型:

int16_t width(void);

功能说明:

  • 返回屏幕宽度

传入参数:

  • null

返回值:

  • int16_t:
    • 屏幕宽度px

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin(); 
  M5.Power.begin();
  M5.Lcd.print(M5.Lcd.width());    //在屏幕上显示屏幕的宽度
}

void loop() {
}

getCursorX

函数原型:

int16_t getCursorX(void);

功能说明:

  • 获取当前光标x坐标。注:不适用于drawNumber()

传入参数:

  • null

返回值:

  • int16_t:
    • 当前光标x坐标

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin();
  M5.Power.begin();
  M5.Lcd.print("Hello");
  int X = M5.Lcd.getCursorX();
  M5.Lcd.print(X);
}

void loop(){
}

getCursorY

函数原型:

int16_t getCursorY(void);

功能说明:

  • 获取当前光标y坐标。注:不适用于drawNumber()

传入参数:

  • null

返回值:

  • int16_t:
    • 当前光标y坐标

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin();
  M5.Power.begin();
  M5.Lcd.print("Hello");
  int X = M5.Lcd.getCursorY();
  M5.Lcd.print(Y);
}

void loop(){
}

getRotation

函数原型:

uint8_t getRotation()

功能说明:

  • 返回屏幕旋转方向

传入参数:

  • null

返回值:

  • uint8_t:
    • 屏幕方向:
      • 0-3

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin();
  M5.Power.begin();
  M5.Lcd.print(M5.Lcd.getRotation());    //在屏幕上输出屏幕的旋转方向
}

void loop(){
}

getTextDatum

函数原型:

uint8_t getTextDatum(void);

功能说明:

  • 获取当前文字对齐方式

传入参数:

  • null

返回值:

  • uint8_t: 文字对齐方式
// These enumerate the text plotting alignment (reference datum point)
#define TL_DATUM 0  // Top left (default)
#define TC_DATUM 1  // Top centre
#define TR_DATUM 2  // Top right
#define ML_DATUM 3  // Middle left
#define CL_DATUM 3  // Centre left, same as above
#define MC_DATUM 4  // Middle centre
#define CC_DATUM 4  // Centre centre, same as above
#define MR_DATUM 5  // Middle right
#define CR_DATUM 5  // Centre right, same as above
#define BL_DATUM 6  // Bottom left
#define BC_DATUM 7  // Bottom centre
#define BR_DATUM 8  // Bottom right
#define L_BASELINE 9  // Left character baseline (Line the 'A' character would sit on)
#define C_BASELINE 10  // Centre character baseline
#define R_BASELINE 11  // Right character baseline

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin();
  M5.Power.begin();
  M5.Lcd.setTextDatum(MC_DATUM);    //设置文字的对齐方式
  M5.Lcd.drawString("hello", 160, 120, 2);    //在(160,120)处以2号字体打印字符串hello
  M5.Lcd.print(M5.Lcd.getTextDatum());    //屏幕打印获取到的文字对齐方式
}

void loop(){
}

setCursor

函数原型:

void setCursor(int16_t x, int16_t y);

功能说明:

  • 设置文本光标到(x,y)位置

传入参数:

  • int16_t x:
    • x坐标(px)
  • int16_t y
    • y坐标(px)

返回值:

  • null

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin();           
  M5.Power.begin();
  M5.Lcd.setCursor(0, 30);
  M5.Lcd.printf("Hello M5");
}

void loop() {}

setRotation

函数原型:

void setRotation(uint8_t m);

功能说明:

  • 设置屏幕旋转方向

传入参数:

  • uint8_t m:
    • 0-3

返回值:

  • null

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin();           
  M5.Power.begin();
  M5.Lcd.setRotation(2);
  M5.Lcd.fillEllipse(160, 100, 60, 100, YELLOW);
  delay(1000);
  M5.Lcd.setRotation(1);
  M5.Lcd.fillEllipse(160, 100, 60, 100, GREEN);
}

void loop() {}

setBrightness

函数原型:

void setBrightness(uint8_t brightness);

功能说明:

  • 设置屏幕亮度

传入参数:

  • uint8_t brightness:
    • 0-255

返回值:

  • null

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin();
  M5.Power.begin();
  M5.Lcd.fillScreen(RED);
}
void loop() {
  M5.update();
  for(int i=0; i<255;i++){
    M5.Lcd.setBrightness(i);
    delay(10);
  }
  for(int i=255; i>0;i--){
    M5.Lcd.setBrightness(i);
    delay(10);
  }
}

alphaBlend

函数原型:

uint16_t alphaBlend(uint8_t alpha, uint16_t fgc, uint16_t bgc);

功能说明:

  • 混合前景和背景色, 设置透明度。返回新的颜色值。

传入参数:

  • uint8_t alpha:
    • 透明度
  • uint16_t fgc:
    • 前景色
  • uint16_t bgc:
    • 背景色

返回值:

  • uint16_t:
    • 混合后的颜色值

案例程序:

#include <M5Stack.h>

void setup() {
  M5.Lcd.begin();
  M5.Power.begin();
  M5.Lcd.fillScreen(M5.Lcd.alphaBlend(128, 0X00FF00, 0XFF0000));
  //设置前景、背景色分别为0X00FF00,0XFF0000 透明度为128,并填充至整个屏幕
}

void loop() {
}

loadFont

函数原型:

void loadFont(String fontName, fs::FS &ffs);
void loadFont(String fontName, bool flash);

功能说明:

  • 加载VLW字体文件

传入参数:

  • String fontName:
    • 字体文件名称
  • bool flash / fs::FS &ffs:
    • 文件来源

返回值:

  • null

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin();
  M5.Power.begin();
  M5.Lcd.loadFont("filename", SD);
}

void loop() {
}

unloadFont

函数原型:

void unloadFont(void);

功能说明:

  • 卸载当前字体挂载

传入参数:

  • null

返回值:

  • null

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin();
  M5.Power.begin();
  M5.Lcd.unloadFont();
}

void loop() {
}

fontsLoaded

函数原型:

uint16_t fontsLoaded()

功能说明:

  • 返回当前已经加载的字体掩码

传入参数:

  • null

返回值:

  • null

返回值:

  • uint16_t:
    • 返回显示字体的编码的16进制值
#ifdef LOAD_GLCD
    fontsloaded = 0x0002;  // Bit 1 set
#endif

#ifdef LOAD_FONT2
    fontsloaded |= 0x0004;  // Bit 2 set
#endif

#ifdef LOAD_FONT4
    fontsloaded |= 0x0010;  // Bit 4 set
#endif

#ifdef LOAD_FONT6
    fontsloaded |= 0x0040;  // Bit 6 set
#endif

#ifdef LOAD_FONT7
    fontsloaded |= 0x0080;  // Bit 7 set
#endif

#ifdef LOAD_FONT8
    fontsloaded |= 0x0100;  // Bit 8 set
#endif

#ifdef LOAD_FONT8N
    fontsloaded |= 0x0200;  // Bit 9 set
#endif

#ifdef SMOOTH_FONT
    fontsloaded |= 0x8000;  // Bit 15 set
#endif

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin();
  M5.Power.begin();
  M5.Lcd.print(M5.Lcd.fontsLoaded());
}

void loop() {
}

fillScreen

函数原型:

void fillScreen(uint32_t color);

功能说明:

  • 以指定的颜色填充整个屏幕

传入参数:

  • uint32_t color:
    • 颜色值

返回值:

  • null

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin();
  M5.Power.begin();
  M5.Lcd.fillScreen(RED);    //在屏幕上填充红色
}

void loop(){
}

invertDisplay

函数原型:

void invertDisplay(boolean i);

功能说明:

  • 反转屏幕颜色

传入参数:

  • boolean i:
    • true:开启颜色反转
    • false:关闭颜色反转

返回值:

  • null

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin();
  M5.Power.begin();
  M5.Lcd.fillScreen(RED);    //在屏幕上填充红色
}

void loop() {
  M5.Lcd.invertDisplay(1);    //开启反转
  delay(1000);
  M5.Lcd.invertDisplay(0);    //关闭反转
}

color565

函数原型:

uint16_t color565(uint8_t r, uint8_t g, uint8_t b);

功能说明:

  • RGB888->RGB565转换函数。

传入参数:

  • uint8_t r:

    • red
  • uint8_t g:

    • green
  • uint8_t b:

    • blue
  • uint32_t color:

    • 颜色值

返回值:

  • uint16_t:
    • RGB565 color

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin();
  M5.Power.begin();
  uint16_t colorvalue = 0;
  colorvalue = color565(255, 255, 255);
  M5.Lcd.fillEllipse(160, 100, 60, 100, colorvalue);
}

void loop() {}

Text

print

函数原型:

size_t print(const char str[]);

功能说明:

  • 在屏幕当前位置打印字符串。(该API继承于Print Class, 同时支持其他参数类型的函数重载)

传入参数:

  • const char str[]:
    • 字符串

返回值:

  • null

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin();
  M5.Power.begin();
  M5.Lcd.print("this is a print text function");
}

void loop() {
}

textWidth

函数原型:

int16_t textWidth(const String& string);

功能说明:

  • 返回文本所占像素宽度

传入参数:

  • const String& string:
    • 字符串

返回值:

  • int16_t:
    • 文本像素宽度

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin(); 
  M5.Power.begin();
  String text = "hello  ";
  M5.Lcd.print(text);
  M5.Lcd.print(M5.Lcd.textWidth(text));    //在屏幕上打印字符串数组text所占像素宽度
}

void loop() {}

setTextSize

函数原型:

void setTextSize(uint8_t s);

功能说明:

  • 设置显示文字的大小

传入参数:

  • uint8_t s:
    • 1-7

返回值:

  • null

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin();
  M5.Power.begin();
  M5.Lcd.setTextSize(4);
  M5.Lcd.print("Hello M5Stack");
}

void loop() {
}

setTextColor

函数原型:

void setTextColor(uint16_t color);
void setTextColor(uint16_t color, uint16_t backgroundcolor);

功能说明:

  • 设置显示文本的前景颜色和背景颜色。文字默认颜色为白色。 backgroundcolor默认颜色为黑色。

传入参数:

  • uint16_t color:
    • 文本颜色值
  • uint16_t backgroundcolor
    • 文本背景颜色值

返回值:

  • null

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin(); //初始化 M5Stack
  M5.Power.begin();
  M5.Lcd.setTextColor(RED,BLACK);    //设置文本的前、背景色分别为红色和黑色
  //M5.Lcd.setTextColor(RED);
}

void loop(){
}

setTextWrap

函数原型:

void setTextWrap(boolean wrapX, boolean wrapY);

功能说明:

  • 设置自动换行功能

传入参数:

  • boolean wrapX:
    • x方向开启换行(默认开启)
  • boolean wrapY
    • y方向开启换行

返回值:

  • null

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin(); 
  M5.Power.begin();
  M5.Lcd.setTextWrap(true, true);    //开启x、y轴自动换行
    M5.Lcd.print("hello M5Stack hello M5Stack hello M5Stack hello M5Stack hello M5Stack hello M5Stack hello M5Stack hello M5Stack");
}

void loop() {}

setTextPadding

函数原型:

void setTextPadding(uint16_t x_width);

功能说明:

  • 填充指定空白宽度(可帮助擦除旧的文本和数字)

传入参数:

  • uint16_t x_width:
    • 文本填充宽度(px)

返回值:

  • null

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin();
  M5.Power.begin();
}

void loop() {
  M5.Lcd.drawString("Orbitron 32", 160, 60, 2);
  delay(2000);
  M5.Lcd.setTextPadding(M5.Lcd.width() - 20);
  M5.Lcd.drawString("Orbitron 32 with padding", 160, 60, 2);
  delay(2000);
}

setTextDatum

函数原型:

void setTextDatum(uint8_t datum);

功能说明:

  • 设置文本对齐方式。 注:不适用于print()

传入参数:

  • uint8_t datum:
    • 文本对齐方式(查看下方定义)

返回值:

  • null
// These enumerate the text plotting alignment (reference datum point)
#define TL_DATUM 0  // Top left (default)
#define TC_DATUM 1  // Top centre
#define TR_DATUM 2  // Top right
#define ML_DATUM 3  // Middle left
#define CL_DATUM 3  // Centre left, same as above
#define MC_DATUM 4  // Middle centre
#define CC_DATUM 4  // Centre centre, same as above
#define MR_DATUM 5  // Middle right
#define CR_DATUM 5  // Centre right, same as above
#define BL_DATUM 6  // Bottom left
#define BC_DATUM 7  // Bottom centre
#define BR_DATUM 8  // Bottom right
#define L_BASELINE 9  // Left character baseline (Line the 'A' character would sit on)
#define C_BASELINE 10  // Centre character baseline
#define R_BASELINE 11  // Right character baseline

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin();
  M5.Power.begin();
  M5.Lcd.setTextDatum(MC_DATUM);
  M5.Lcd.drawString("hello", 160, 120, 2);
}

void loop(){
}

Draw

drawFastHLine

函数原型:

void drawFastHLine(int32_t x, int32_t y, int32_t w, uint32_t color);

功能说明:

  • 在(X,Y)处绘制一条长度为w的水平线条

传入参数:

  • int32_t x:
    • 坐标y
  • int32_t y:
    • 坐标x
  • int32_t w:
    • 水平线段长度
  • uint32_t color:
    • 颜色值

返回值:

  • null

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin();
  M5.Power.begin();
  M5.Lcd.drawFastHLine(3, 100, 255, GREEN);    //在(3,100)处划一条长度为255的绿色水平线条
}

void loop() {
}

drawFastVLine

函数原型:

void drawFastVLine(int32_t x, int32_t y, int32_t w, uint32_t color);

功能说明:

  • 在(X,Y)处绘制一条长度为w的垂直线条

传入参数:

  • int32_t x:
    • 坐标y
  • int32_t y:
    • 坐标x
  • int32_t w:
    • 垂直线段长度
  • uint32_t color:
    • 颜色值

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin();
  M5.Power.begin();
  M5.Lcd.drawFastVLine(100, 0, 255, TFT_GREEN);    //在(100,0)处划一条长度为255的绿色垂直线条
}

void loop(){
}

drawString()

函数原型:

int16_t drawString(const char *string, int32_t poX, int32_t poY, uint8_t font);

功能说明:

  • 在(x,y)处显示字符串

传入参数:

  • const char *string:
    • 字符串
  • int32_t poX:
    • x坐标
  • int32_t poY:
    • y坐标
  • uint8_t font:
    • 字体索引

返回值:

  • int16_t:
    • 字符串所占像素宽度

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin();
  M5.Power.begin();
  M5.Lcd.drawString("Hello M5", 160, 100, 2);    //在(160,100)处以2号字体显示字符串Hello M5
}

void loop(){
}

drawNumber

函数原型:

void drawNumber(long long_num, int32_t poX, int32_t poY);

功能说明:

  • 在(x,y)处打印整数

传入参数:

  • long long_num:
    • 数字
  • int32_t poX:
    • x坐标
  • int32_t poY:
    • y坐标

返回值:

  • null

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin();
  M5.Power.begin();
  M5.Lcd.drawNumber(99, 55, 100);    //在(99,55)处显示整数100
}

void loop(){
}

drawChar

功能说明:

  • 在(X,Y)处以字体font显示字符

函数原型:

int16_t drawChar(int16_t uniCode, int32_t x, uint16_t y, uint8_t font);

传入参数:

  • int16_t uniCode:
    • 字符
  • int32_t x:
    • x坐标
  • uint16_t y:
    • y坐标
  • uint8_t font:
    • 字体索引

返回值:

  • int16_t:
    • 字符所占像素宽度

案例程序:

#include <M5Stack.h>
void setup() {
  M5.begin(); //初始化 M5Stack
  M5.Power.begin();
  M5.Lcd.drawChar('A', 160, 120, 2);    //在(160,120)处以字体2显示字符A
}
void loop(){
}

drawFloat

函数原型:

int16_t drawFloat(float floatNumber, uint8_t dp, int32_t poX, int32_t poY);

功能说明:

  • 在(X,Y)处显示小数点后dp位的浮点数floatNumber

传入参数:

  • float floatNumber:
    • 浮点数
  • uint8_t dp:
    • 保留小数位数
  • int32_t poX:
    • 在x处显示
  • int32_t poY:
    • 在y处显示

返回值:

  • int16_t:
    • 显示字符所占像素宽度

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin(); 
  M5.Power.begin();
  M5.Lcd.drawFloat(3.1415928,7,100,100);    //在(100,100)处显示小数点后7位的浮点数3.1415928
}

void loop() {}

drawPixel

函数原型:

void drawPixel(int32_t x, int32_t y, uint32_t color);

功能说明:

  • 在(x,y)处画点

传入参数:

  • int32_t x:
    • x坐标
  • int32_t y:
    • y坐标
  • uint32_t color:
    • 颜色值

返回值:

  • null

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin();
  M5.Power.begin();
  M5.Lcd.drawPixel(22,22,RED);    //在(22,22)处画一个红色的像素点
}

void loop() {}

drawLine

函数原型:

void drawLine(int32_t x0, int32_t y0, int32_t x1, int32_t y1, uint32_t color);

功能说明:

  • 从点(x0,y0)到点(x1,y1)以指定颜色(color)绘制直线

传入参数:

  • int32_t x0:
    • x0坐标
  • int32_t y0:
    • y0坐标
  • int32_t x1:
    • x1坐标
  • int32_t y1:
    • y1坐标
  • uint32_t color:
    • 颜色值

返回值:

  • null
#include <M5Stack.h>

void setup() {
  M5.begin();
  M5.Power.begin();
  M5.Lcd.drawLine(200, 0, 200,2000,GREEN);    //从点(200,0)到点(200,200)以绿色绘制直线
}

void loop(){
}

drawRect

函数原型:

void drawRect(int32_t x, int32_t y, int32_t w, int32_t h, uint32_t color);

功能说明:

  • 在(x,y)处以指定颜色绘制宽高分别为width和height的矩形线框

传入参数:

  • int32_t x:
    • x坐标
  • int32_t y:
    • y坐标
  • int32_t w:
    • 矩形宽度(px)
  • int32_t h:
    • 矩形高度(px)
  • uint32_t color:
    • 颜色值

返回值:

  • null

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin();
  M5.Power.begin();
  M5.Lcd.drawRect(180, 12, 122, 10, BLUE);    //在(180,12)处以蓝色绘制宽高分别为122和10的矩形线框
}

void loop(){
}

fillRect

函数原型:

void fillRect(int32_t x, int32_t y, int32_t w, int32_t h, uint32_t color);

功能说明:

  • 在(x,y)处以指定颜色绘制宽高分别为width和height的填充矩形

传入参数:

  • int32_t x:
    • x坐标
  • int32_t y:
    • y坐标
  • int32_t w:
    • 矩形宽度(px)
  • int32_t h:
    • 矩形高度(px)
  • uint32_t color:
    • 颜色值

返回值:

  • null

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin();
  M5.Power.begin();
  M5.Lcd.fillRect(150, 120, 122, 10, BLUE);    //在(150,120)处绘制一个长122、宽为10的蓝色填充矩形
}

void loop(){
}

drawRoundRect

函数原型:

void drawRoundRect(int32_t x, int32_t y, int32_t w, int32_t h, int32_t r, uint32_t color);

功能说明:

  • 在(x,y)处绘制宽高分别为width、height的圆角矩形线框,圆角半径为radius,颜色为color

传入参数:

  • int32_t x:
    • x坐标
  • int32_t y:
    • y坐标
  • int32_t w:
    • 矩形宽度(px)
  • int32_t h:
    • 矩形高度(px)
  • int32_t r:
    • 圆角半径
  • uint32_t color:
    • 颜色值

返回值:

  • null

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin(); 
  M5.Power.begin();
  M5.Lcd.drawRoundRect(55,55,30,50,10,GREEN);    //在(55,55)处绘制宽高分别为30、50的圆角半径为10,颜色为绿色的圆角矩形线框

void loop() {}

fillRoundRect

函数原型:

void fillRoundRect(int32_t x, int32_t y, int32_t w, int32_t h, int32_t r, uint32_t color);

功能说明:

  • 在(x,y)处绘制宽高分别为width、height的圆角矩形线框,圆角半径为radius,颜色为color

传入参数:

  • int32_t x:
    • x坐标
  • int32_t y:
    • y坐标
  • int32_t w:
    • 矩形宽度(px)
  • int32_t h:
    • 矩形高度(px)
  • int32_t r:
    • 圆角半径
  • uint32_t color:
    • 颜色值

返回值:

  • null

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin(); 
  M5.Power.begin();
  M5.Lcd.fillRoundRect(55, 55, 30, 50, 10, GREEN);//在(55,55)处绘制宽高分别为30、50的圆角半径为10,颜色为绿色的圆角矩形  
}

void loop() {}

drawCircle

函数原型:

void drawCircle(int32_t x0, int32_t y0, int32_t r, uint32_t color);

功能说明:

  • 在(x,y)处绘制半径为r的color色圆线框

传入参数:

  • uint32_t x0:
    • 圆心x0
  • int32_t y0:
    • 圆心y0
  • int32_t r:
    • 半径
  • uint32_t color:
    • 颜色值

返回值:

  • null

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin(); 
  M5.Power.begin();
  M5.Lcd.drawCircle(100, 100, 50, RED);   //在(x,y)处绘制半径为50的红色圆线圈
}

void loop() {}

fillCircle

函数原型:

void drawCircle(int32_t x0, int32_t y0, int32_t r, uint32_t color);

功能说明:

  • 在(x,y)处绘制半径为r的color色填充圆

传入参数:

  • uint32_t x0:
    • 圆心x0
  • int32_t y0:
    • 圆心y0
  • int32_t r:
    • 半径
  • uint32_t color:
    • 颜色值

返回值:

  • null

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin(); 
  M5.Power.begin();
  M5.Lcd.fillCircle(100, 100, 50, RED); //在(x,y)处绘制半径为50的填充红色圆
}

void loop() {}

drawEllipse

函数原型:

void drawEllipse(int16_t x0, int16_t y0, int32_t rx, int32_t ry, uint16_t color);

功能说明:

  • 在(x,y)处绘制宽度、高度分别为rx,ry的椭圆线框

传入参数:

  • int16_t x0:
    • 圆心x0
  • int16_t y0:
    • 圆心y0
  • int32_t rx:
    • 宽度(px)
  • int32_t ry:
    • 高度(px)
  • uint16_t color:
    • 颜色值

返回值:

  • null

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin(); 
  M5.Power.begin();
  M5.Lcd.drawEllipse(160, 100, 60, 100, YELLOW);//在(160,100)处绘制颜色为黄色的宽度、高度分别为60,100的椭圆轮廓线
}

void loop() {}

fillEllipse

函数原型:

void fillEllipse(int16_t x0, int16_t y0, int32_t rx, int32_t ry, uint16_t color);

功能说明:

  • 在(x,y)处绘制宽度、高度分别为rx,ry的填充椭圆

传入参数:

  • int16_t x0:
    • 圆心x0
  • int16_t y0:
    • 圆心y0
  • int32_t rx:
    • 宽度(px)
  • int32_t ry:
    • 高度(px)
  • uint16_t color:
    • 颜色值

返回值:

  • null

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin();
  M5.Power.begin();
  M5.Lcd.fillEllipse(160, 100, 60, 100, YELLOW);    //在(160,100)处绘制颜色为黄色的宽度、高度分别为60,100的填充黄色椭圆
}

void loop() {}

drawTriangle

函数原型:

void drawTriangle(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t x2, int32_t y2, uint32_t color);

功能说明:

  • 以(x1, y1) (x2, y2) (x3, y3)为顶点绘制三角形线框

传入参数:

  • int16_t x0:
    • 三角形顶点x0坐标
  • int16_t y0:
    • 三角形顶点y0坐标
  • int16_t x1:
    • 三角形顶点x1坐标
  • int16_t y1:
    • 三角形顶点y1坐标
  • int16_t x2:
    • 三角形顶点x2坐标
  • int16_t y2:
    • 三角形顶点y2坐标
  • uint16_t color
    • 颜色值

返回值:

  • null

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin(); 
  M5.Power.begin();
  M5.Lcd.drawTriangle(30, 30, 180, 100, 80, 150, YELLOW); //以 (30,30) (180,100) (80,150)为顶点绘制黄色三角形线框
}

void loop() {}

fillTriangle

函数原型:

void fillTriangle(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t x2, int32_t y2, uint32_t color);

功能说明:

  • 以(x1, y1) (x2, y2) (x3, y3)为顶点绘制填充三角形

传入参数:

  • int16_t x0:
    • 三角形顶点x0坐标
  • int16_t y0:
    • 三角形顶点y0坐标
  • int16_t x1:
    • 三角形顶点x1坐标
  • int16_t y1:
    • 三角形顶点y1坐标
  • int16_t x2:
    • 三角形顶点x2坐标
  • int16_t y2:
    • 三角形顶点y2坐标
  • uint16_t color
    • 颜色值

返回值:

  • null

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin(); 
  M5.Power.begin();
  M5.Lcd.fillTriangle(30, 30, 180, 100, 80, 150, YELLOW); //以 (30,30) (180,100) (80,150)为顶点绘制填充黄色三角形
}

void loop() {}

drawXBitmap

函数原型:

void drawXBitmap(int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, int16_t h, uint16_t color);

功能说明:

  • 绘制bitmap位图

传入参数:

  • int16_t x:
    • 坐标x
  • int16_t y:
    • 坐标y
  • const uint8_t *bitmap:
    • 图像数据
  • int16_t w:
    • 图像宽度(px)
  • int16_t h:
    • 图像高度(px)
  • uint16_t color:
    • 颜色值

案例程序:

drawBitmap

函数原型:

void drawBitmap(int16_t x0, int16_t y0, int16_t w, int16_t h, const uint16_t *data);
void drawBitmap(int16_t x0, int16_t y0, int16_t w, int16_t h, uint16_t *data);
void drawBitmap(int16_t x0, int16_t y0, int16_t w, int16_t h, const uint16_t *data, uint16_t transparent);
void drawBitmap(int16_t x0, int16_t y0, int16_t w, int16_t h, const uint8_t *data);
void drawBitmap(int16_t x0, int16_t y0, int16_t w, int16_t h, uint8_t *data);

功能说明:

  • 绘制bmp图像数据

传入参数:

  • int16_t x0:
    • x坐标
  • int16_t y0:
    • y坐标
  • int16_t w:
    • 图像宽度(px)
  • int16_t h:
    • 图像高度(px)
  • const uint16_t *data:
    • bmp数据
  • transparent:
    • 透明色码

返回值:

  • null

drawBmpFile

函数原型:

void drawBmpFile(fs::FS &fs, const char *path, uint16_t x, uint16_t y);

功能说明:

  • 从文件中读取bmp图像并绘制它

传入参数:

  • fs::FS &fs:
    • 文件流句柄
  • const char *path:
    • 文件路径(SD 、SPIFFS)
  • uint16_t x:
    • x坐标
  • uint16_t y:
    • y坐标

返回值:

  • null
注意事项:
1.根据大小和位数可能无法扩展
2.需要提前预装 Arduino ESP32 filesystem uploader

案例程序:

#include "FS.h"
//#include "SPIFFS.h"
#include <M5Stack.h>
void setup(){
    M5.begin(true, false, false, false);
  M5.Power.begin();
  M5.Lcd.drawBmpFile(SD, "/p2.bmp",0,0);
  //M5.Lcd.drawBmpFile(SPIFFS, "/p2.bmp", 0, 0);
}

我们提供一个可以用来转换jpg图像->.c文件的脚本, 可以使用它来转换一些图片, 并使用上面的API将图像绘制到屏幕上:

drawJpg

函数原型:

void drawJpg(const uint8_t *jpg_data, size_t jpg_len, uint16_t x,uint16_t y, uint16_t maxWidth, uint16_t maxHeight,uint16_t offX, uint16_t offY, jpeg_div_t scale);

功能说明:

  • 从内存中读取 JPEG 格式的图片数据并绘制它

传入参数:

  • const uint8_t *jpg_data:
    • jpg数据指针
  • size_t jpg_len:
    • jpg数据长度
  • uint16_t x:
    • x坐标
  • uint16_t y:
    • y坐标
  • uint16_t maxWidth:
    • 最大显示宽度
  • uint16_t maxHeight:
    • 最大显示高度
  • uint16_t offX:
    • x像素偏移
  • uint16_t offY:
    • y像素偏移
  • jpeg_div_t scale:
    • JPEG_DIV_NONE: no care
    • JPEG_DIV_2: 1/2
    • JPEG_DIV_4: 1/4
    • JPEG_DIV_8: 1/8
    • JPEG_DIV_MAX: MAX

返回值:

  • null
注意事项:
1.根据大小和位数可能无法扩展
2.需要提前预装 Arduino ESP32 filesystem uploader

案例程序:

#include <M5Stack.h>
extern uint8_t tetris_img[];    //引用存储图像的数组,需要提前和 xxx.ino放在同一文件夹中

void setup() {
  M5.begin();
  M5.Power.begin();
  M5.Lcd.drawJpg(tetris_img, 34215);    //从内存中读取名为tetris_img的jpeg文件
}
void loop(){
}

drawJpgFile

函数原型:

void drawJpgFiledrawJpgFile(fs::FS &fs, const char *path, uint16_t x,uint16_t y,uint16_t maxWidth, uint16_t maxHeight, uint16_t offX,uint16_t offY, jpeg_div_t scale);

功能说明:

  • 从文件流中读取JPEG数据并绘制它

传入参数:

  • fs::FS &fs:
    • 文件流句柄
  • const char *path:
    • 文件路径
  • uint16_t x:
    • x坐标
  • uint16_t y:
    • y坐标
  • uint16_t maxWidth:
    • 最大显示宽度
  • uint16_t maxHeight:
    • 最大显示高度
  • uint16_t offX:
    • x像素偏移
  • uint16_t offY:
    • y像素偏移
  • jpeg_div_t scale:
    • JPEG_DIV_NONE: no care
    • JPEG_DIV_2: 1/2
    • JPEG_DIV_4: 1/4
    • JPEG_DIV_8: 1/8
    • JPEG_DIV_MAX: MAX

返回值:

  • null

progressBar

函数原型:

void progressBar(int x, int y, int w, int h, uint8_t val);

功能说明:

  • 显示显示进度的栏

传入参数:

  • int x:
    • x坐标
  • int y:
    • y坐标
  • int w:
    • 宽度(px)
  • int h:
    • 高度(px)
  • uint8_t val:
    • 进度(0-100)

返回值:

  • null

案例程序:

#include <M5Stack.h>

void setup() {
  M5.begin();
  M5.Power.begin();
  M5.Lcd.progressBar(0, 0, 240, 20, 20);    //在(0,0)处显示宽高分别为240,20进度为20%的进度条
}

void loop() {
}

qrcode

函数原型:

void qrcode(const char *string, uint16_t x, uint16_t y, uint8_t width, uint8_t version);
void qrcode(const String &string, uint16_t x, uint16_t y, uint8_t width, uint8_t version);

功能说明:

  • 绘制一个二维码。使用时候请根据输入字符的数量选择合适的二维码版本。

传入参数:

  • const String &string:
    • 编码字符串
  • uint16_t x:
    • x坐标
  • uint16_t y:
    • y坐标
  • uint8_t width:
    • 二维码宽度(px)
  • uint8_t version:
    • 二维码版本:1-40

返回值:

  • null

案例程序:

#include <M5Stack.h>

void setup() {
  M5.Lcd.begin(); 
  M5.Power.begin();
  M5.Lcd.qrcode("http://www.m5stack.com", 50, 10, 220, 6);
}

void loop() {
}

Sprite

TFT_eSprite使用说明
TFT_eSprite和M5Display都是继承于 In_eSPI.h - TFT_eSPI Class 因此,上方用于Lcd的API同样适用于TFT_eSprite。TFT_eSprite在使用时, 需通过createSprite函数创建画布, 在完成图案绘制后通过pushSprite函数推送至屏幕。使用这种方式能够有效减少屏幕刷新次数, 使得画面变化更加平滑。

setColorDepth

函数原型:

void* TFT_eSprite::setColorDepth(int8_t b);

功能说明:

  • 设置画布色深, 色彩深度bit将影响创建画布所占的内存。

传入参数:

  • int8_t b:色彩深度(bit)
    • 1, 8, 16

返回值:

  • null

案例程序:

#include <M5Stack.h>
TFT_eSprite img = TFT_eSprite(&M5.Lcd);

void setup() {
    M5.begin();        // Init M5Stack.  初始化M5Stack
    M5.Power.begin();  // Init power.  初始化电源模块
    img.setColorDepth(8); // Set color depth.  设置色深
    img.setTextSize(2);
    img.createSprite(320, 240);  //Create a 320x240 canvas. 创建一块320x240的画布
}

void loop() {}

createSprite

函数原型:

void *createSprite(int16_t w, int16_t h, uint8_t frames);

功能说明:

  • 创建一个指定宽高的画布

传入参数:

  • int16_t w:
    • 画布宽度(px)
  • int16_t h:
    • 画布高度(px)
  • uint8_t frames:
    • 位深所占字节:1/2

返回值:

  • void *:
    • 被创建的画布的指针, 若为NULL则代表未创建成功。

案例程序:

#include <M5Stack.h>

TFT_eSprite img = TFT_eSprite(&M5.Lcd);

void setup() {
    M5.begin();
    M5.Power.begin();
    img.setColorDepth(8);  // Set the color depth to 8 bits. 设置颜色深度为8位
    img.createSprite(320, 240);  //Create a 320x240 canvas. 创建一块320x240的画布
    img.fillSprite(RED);         //Fill the canvas with red. 在画布上全部填充红色
    img.pushSprite(0,0);  // Push the canvas to the screen at (0,0). 把画布推送到屏幕(0,0)处
}

void loop() {}

fillSprite

函数原型:

void fillSprite(uint32_t color);

功能说明:

  • 将Sprite填充指定颜色

传入参数:

  • uint32_t color:
    • 颜色值

返回值:

  • null

案例程序:

#include <M5Stack.h>

TFT_eSprite img = TFT_eSprite(&M5.Lcd);

void setup() {
    M5.begin();
    M5.Power.begin();
    img.setColorDepth(8);  // Set the color depth to 8 bits. 设置颜色深度为8位
    img.createSprite(320, 240);  //Create a 320x240 canvas. 创建一块320x240的画布
    img.fillSprite(RED);         //Fill the canvas with red. 在画布上全部填充红色
    img.pushSprite(0,0);  // Push the canvas to the screen at (0,0). 把画布推送到屏幕(0,0)处
}

void loop() {}
}

void loop() {}

pushSprite

函数原型:

void pushSprite(int32_t x, int32_t y, uint16_t transparent);

功能说明:

  • 推送画布到指定坐标,并设置穿透色

传入参数:

  • int32_t x:
    • x坐标
  • int32_t y:
    • y坐标
  • uint16_t transparent:
    • 穿透色(option)

返回值:

  • null

案例程序:

#include <M5Stack.h>
TFT_eSprite img = TFT_eSprite(&M5.Lcd);

void setup() {
  M5.begin();
  M5.Power.begin();
  img.createSprite(320, 240);    //创建一块320x240的画布
  img.fillSprite(RED);    //在画布上全部填充红色
  img.fillCircle(100,100,20,GREEN);
  img.pushSprite(0, 0, GREEN);    //把画布推送到屏幕(0,0)处并设置绿色为穿透色
}

void loop() {}

width

函数原型:

int16_t width(void);

功能说明:

  • 返回Sprite的宽度

传入参数:

  • null

返回值:

  • int16_t:
    • 画布宽度

案例程序:

#include <M5Stack.h>
TFT_eSprite img = TFT_eSprite(&M5.Lcd);

void setup() {
  M5.begin();
  M5.Power.begin();
  img.createSprite(320, 240);    //创建一块320x240的画布
  img.fillSprite(RED);    //在画布上全部填充红色
  img.pushSprite(0, 0, WHITE);    //把画布推送到屏幕(0,0)处并设置白色为穿透色
  M5.Lcd.print(img.width());    //屏幕打印画布的宽度
}

void loop() {}

height

函数原型:

int16_t height(void);

功能说明:

  • 返回Sprite的高度

传入参数:

  • null

返回值:

  • int16_t:
    • 画布高度

案例程序:

#include <M5Stack.h>
TFT_eSprite img = TFT_eSprite(&M5.Lcd);

void setup() {
  M5.begin();
  M5.Power.begin();
  img.createSprite(320, 240);    //创建一块320x240的画布
  img.fillSprite(RED);    //在画布上全部填充红色
  img.pushSprite(0, 0, WHITE);    //把画布推送到屏幕(0,0)处并设置白色为穿透色
  M5.Lcd.print(img.height());    //屏幕打印画布的高度
}

void loop() {}

deleteSprite

函数原型:

void deleteSprite(void);

功能说明:

  • 从内存中删除画布

传入参数:

  • null

返回值:

  • null

案例程序:

#include <M5Stack.h>
TFT_eSprite img = TFT_eSprite(&M5.Lcd);

void setup() {
  M5.begin();
  M5.Power.begin();
  img.deleteSprite();    //从内存中删除画布
}

void loop() {}
On This Page