显示屏

LCD 屏幕显示库

M5 系列显示库说明

1. Display 底层绘图库(M5.Lcd)

  • 底层图形库,提供屏幕绘制、文字、线条、颜色管理等基础功能。

  • 可独立使用,适合只需要绘制图形或文字的场景。

  • 调用方式:M5.Lcd.fillRect()、M5.Lcd.drawRect()、M5.Lcd.drawString() 等。

2. M5Widgets

  • 基础控件库,提供标签、图片显示等 UI 控件。

  • 底层依赖 M5GFX。

  • 适合需要简单交互控件的界面。

  • 调用方式:M5.Widgets.Label()、M5.Widgets.Image()、M5.Widgets.Rectangle() 等。

  • 注意:M5.Widgets 提供 UI 组件 类,不提供绘图方法。

  • 建议:新的交互界面项目优先使用 M5UI/LVGL;简单界面或现有项目中的组件可使用 M5.Widgets。

3. M5UI

  • 高层 UI 框架,基于 LVGL 封装。

  • 提供页面管理、多控件布局和统一事件处理。

  • 建议:新的交互界面项目优先使用 M5UI/LVGL。

使用提示

  • ⚠️ 不建议同时混用 M5GFX、M5Widgets、M5UI,可能导致渲染异常或事件冲突。

  • 单独绘图 → 使用 M5GFX。

  • 简单控件交互 → 使用 M5Widgets。

  • 多页面界面 → 使用 M5UI/LVGL(新项目推荐)。

常见错误及正确用法

  • ❌ WRONG: M5.Lcd.fill_rect() / draw_string() / set_text_color() - M5.Lcd methods are camelCase only; snake_case raises AttributeError

  • ℹ️ NOT the same rule: m5ui Label.set_text_color() and Image.draw_string() are real snake_case methods of those classes - check the object type, do not “fix” them by habit

  • ❌ 错误:Widgets.fillRect() 或 Widgets.drawRect()——Widgets 模块中没有这些方法。

  • ✅ 正确:M5.Lcd.fillRect() 或 M5.Lcd.drawRect()——通过 M5.Lcd 调用绘图方法。

  • ❌ 错误:from M5 import Widgets; Widgets.fillRect(...)——Widgets 用于创建 UI 组件,不提供此绘图方法。

  • ✅ 正确:from M5 import *; M5.Lcd.fillRect(...)——通过 M5.Lcd 调用绘图方法。

主要区别:- M5.Lcd 提供绘图方法(fillRect、drawRect、drawCircle、drawString 等);- M5.Widgets 提供 UI 组件类(Label、Image、Rectangle、Circle 等)。

屏幕旋转方向

旋转值以主机的正常观看方向为基准。0、1、2、3 分别表示旋转 0°、90°、180°、270°,不能统一理解为竖屏或横屏;实际方向取决于主机型号和 M5GFX 版本。

正常显示方向

  • Core/Basic/Fire、Core2、CoreS3、StackChan:旋转值 0,逻辑尺寸 320 × 240。

  • Cardputer、Cardputer Adv、DinMeter、Station:旋转值 0,逻辑尺寸 240 × 135。

  • CoreP4X:旋转值 0,逻辑尺寸 480 × 480。

以上取值对应本文档配套的固件,旧固件的方向映射可能不同。对于上述 320 × 240 主机,旋转值为 1 或 3 时,逻辑尺寸为 240 × 320;为 0 或 2 时,逻辑尺寸为 320 × 240。

对于 CoreP4X 这样的方形屏幕,四个旋转方向的宽高相同,需要通过文字朝向或四角标记确认显示方向。

旧示例迁移

Core/Basic/Fire、Core2、CoreS3 和 StackChan 的旧示例中,用于正常横屏的 Widgets.setRotation(1) 现在应改为 Widgets.setRotation(0);M5.Lcd.setRotation() 同理。

图形化工程需要同时更新 .m5f2 的屏幕旋转设置和工程内的旋转积木,并检查生成的 Python;保存后重新打开工程,确认设置仍然正确。

使用 M5UI/LVGL 时,应在调用 m5ui.init() 前设置旋转方向,使界面按预期的屏幕尺寸初始化。

其他主机以及有意旋转显示的布局,应按预期效果选择旋转值,不要将所有 1 一律替换为 0。

修改方向后,通过 M5.Lcd.width() 和 M5.Lcd.height() 检查逻辑宽高。坐标原点位于左上角,X 向右增大,Y 向下增大。带触摸屏的主机还应检查四角触点与显示位置是否一致。

import M5
from M5 import Widgets

M5.begin()
Widgets.setRotation(0)
width = M5.Lcd.width()
height = M5.Lcd.height()

UiFlow2 应用示例

基础绘图

在 UiFlow2 上打开 cores3_draw_test_example.m5f2 项目。

本示例演示了 M5.Lcd 的基本绘图功能,包括文字、图片、二维码以及各种图形。

UiFlow2 代码块:

cores3_draw_test_example.png

示例输出:

无

画布绘图

在 UiFlow2 上打开 cores3_display_canvas_example.m5f2 项目。

本示例演示了如何创建和使用画布进行绘图。它创建一个 2 位颜色深度的画布,在上面绘制圆形,然后将画布推送到显示屏。

UiFlow2 代码块:

cores3_display_canvas_example.png

示例输出:

无

MicroPython 应用示例

基础绘图

本示例演示了 M5.Lcd 的基本绘图功能,包括文字、图片、二维码以及各种图形。

MicroPython 代码块:

 1# SPDX-FileCopyrightText: 2026 M5Stack Technology CO LTD
 2#
 3# SPDX-License-Identifier: MIT
 4import os, sys, io
 5import M5
 6from M5 import *
 7
 8
 9def setup():
10    M5.begin()
11    Widgets.setRotation(0)
12    Widgets.fillScreen(0x222222)
13
14    print((str("rotation: ") + str((M5.Display.getRotation()))))
15    print(
16        (
17            str((str("w: ") + str((M5.Display.width()))))
18            + str((str("h:") + str((M5.Display.height()))))
19        )
20    )
21    M5.Display.setRotation(0)
22    M5.Display.clear(0x000000)
23    M5.Display.setTextColor(0x0000FF, 0x000000)
24    M5.Display.setCursor(200, 3)
25    M5.Display.printf("hello M5")
26    M5.Display.print("hello M5", 0x6600CC)
27    M5.Display.drawImage("/flash/res/img/default.png", 0, 0)
28    M5.Display.drawQR("Hello", 220, 40, 100, 1)
29    M5.Display.drawCircle(30, 80, 20, 0x3333FF)
30    M5.Display.fillCircle(80, 80, 20, 0x009900)
31    M5.Display.drawEllipse(60, 140, 50, 30, 0x00FF00)
32    M5.Display.fillEllipse(60, 140, 30, 20, 0xFFFF00)
33    M5.Display.drawLine(115, 10, 115, 60, 0xFF0000)
34    M5.Display.drawRect(125, 10, 40, 30, 0xFF0000)
35    M5.Display.fillRect(125, 50, 40, 30, 0x00FF00)
36    M5.Display.drawTriangle(135, 150, 110, 190, 160, 190, 0x00FF00)
37    M5.Display.fillTriangle(145, 150, 170, 190, 190, 150, 0x0000FF)
38    M5.Display.drawArc(10, 180, 40, 45, 0, 90, 0xFFFF00)
39    M5.Display.fillArc(20, 190, 40, 45, 0, 90, 0x00FFFF)
40
41
42def loop():
43    M5.update()
44
45
46if __name__ == "__main__":
47    try:
48        setup()
49        while True:
50            loop()
51    except (Exception, KeyboardInterrupt) as e:
52        try:
53            from utility import print_error_msg
54
55            print_error_msg(e)
56        except ImportError:
57            print("please update to latest firmware")

示例输出:

无

画布绘图

本示例演示了如何创建和使用画布进行绘图。它创建一个 2 位颜色深度的画布,在上面绘制圆形,然后将画布推送到显示屏。

MicroPython 代码块:

 1# SPDX-FileCopyrightText: 2026 M5Stack Technology CO LTD
 2#
 3# SPDX-License-Identifier: MIT
 4import os, sys, io
 5import M5
 6from M5 import *
 7
 8
 9title0 = None
10canvas_rmy = None
11
12
13def setup():
14    global title0, canvas_rmy
15
16    M5.begin()
17    Widgets.setRotation(0)
18    Widgets.fillScreen(0x222222)
19    title0 = Widgets.Title(
20        "Display canvas example", 3, 0xFFFFFF, 0x0000FF, Widgets.FONTS.Montserrat18
21    )
22
23    canvas_rmy = M5.Display.newCanvas(100, 100, 2, True)
24    canvas_rmy.drawCircle(30, 30, 20, 0xFFFFFF)
25    canvas_rmy.drawCircle(30, 50, 20, 0xFFFFFF)
26    canvas_rmy.drawCircle(50, 40, 20, 0xFFFFFF)
27    canvas_rmy.push(50, 30)
28    print((str("colro depth: ") + str((canvas_rmy.getColorDepth()))))
29
30
31def loop():
32    global title0, canvas_rmy
33    M5.update()
34
35
36if __name__ == "__main__":
37    try:
38        setup()
39        while True:
40            loop()
41    except (Exception, KeyboardInterrupt) as e:
42        try:
43            from utility import print_error_msg
44
45            print_error_msg(e)
46        except ImportError:
47            print("please update to latest firmware")

示例输出:

无

使用 Canvas 实现无闪烁动画

当一帧动画包含多次绘制操作时,不要直接在 M5.Lcd 上逐个擦除并重绘元素。屏幕可能显示刚被清空或只绘制了一部分的中间状态,从而产生闪烁。应预先创建一个离屏画布,在画布上绘制完整的一帧,准备好后再调用一次 push() 显示。

API 名称为 M5.Lcd,区分大小写。应在初始化时创建画布并重复使用;每帧都新建画布会浪费内存,还可能导致内存分配失败。

import time
import M5
from M5 import *


canvas = None
ball_x = 12
direction = 2


def setup():
    global canvas
    M5.begin()
    # Only the animated region needs a canvas. PSRAM must be available when psram=True.
    canvas = M5.Lcd.newCanvas(w=200, h=80, bpp=16, psram=True)


def loop():
    global ball_x, direction
    M5.update()

    # Build the whole frame off-screen. Nothing below is visible yet.
    canvas.fillRect(0, 0, 200, 80, 0x000000)
    canvas.fillCircle(ball_x, 40, 12, 0x00FF00)
    canvas.setTextColor(0xFFFFFF, 0x000000)
    canvas.drawString("Canvas animation", 8, 8)

    # Present the completed frame in one operation.
    canvas.push(60, 80)

    ball_x += direction
    if ball_x <= 12 or ball_x >= 188:
        direction = -direction
    time.sleep_ms(16)


if __name__ == "__main__":
    setup()
    while True:
        loop()

屏幕其余区域保持静止时,只需为变化区域创建相应大小的画布。内存不足时,可缩小画布或降低颜色深度;设备没有 PSRAM 时,应设置 psram=False。不涉及中间帧状态的单次小范围更新仍可直接绘制。对于多步图形绘制、精灵、仪表或动画帧,建议在画布上完成绘制后,调用一次 push() 显示。

API参考

class M5.Display
width()

获取显示屏水平分辨率。

返回宽度:

水平分辨率。

返回类型:

int

UiFlow2 代码块:

width.png

MicroPython 代码块:

Display.width()
height()

获取显示屏垂直分辨率。

返回高度:

垂直分辨率。

返回类型:

int

UiFlow2 代码块:

height.png

MicroPython 代码块:

Display.height()
getRotation()

获取显示屏旋转方向。

返回旋转方向:

旋转方向值

返回类型:

int

旋转值:

  • 0:旋转 0°

  • 1:旋转 90°

  • 2:旋转 180°

  • 3:旋转 270°

UiFlow2 代码块:

getRotation.png

MicroPython 代码块:

Display.getRotation()
getColorDepth()

获取显示屏颜色深度。

返回颜色深度:

以每像素位数表示的颜色深度。

返回类型:

int

UiFlow2 代码块:

getColorDepth.png

MicroPython 代码块:

Display.getColorDepth()
getCursor()

获取显示屏绘图光标位置。

返回位置:

tuple (x, y) 光标位置。

返回类型:

tuple

UiFlow2 代码块:

getCursor.png

MicroPython 代码块:

Display.getCursor()
setRotation(r)

设置显示屏旋转。

参数:

r (int) – 旋转值(0~3):- 0:旋转 0°。- 1:旋转 90°。- 2:旋转 180°。- 3:旋转 270°。

备注

各主机的显示尺寸及旧示例迁移方法见 屏幕旋转方向。使用 M5UI/LVGL 时,应在初始化界面前设置旋转方向。

UiFlow2 代码块:

setRotation.png

MicroPython 代码块:

Display.setRotation(2)
setColorDepth(bpp)

设置画布的颜色深度。

参数:

bpp (int) – 期望的颜色深度(以每像素位数表示)。

注意:此方法仅适用于画布对象,不适用于显示屏本身。对于 CoreS3 设备,显示屏颜色深度固定为 16 位。

UiFlow2 代码块:

setColorDepth.png

MicroPython 代码块:

Display.setColorDepth(16)
setEpdMode(epd_mode)

设置显示屏的 EPD 模式。

参数:

epd_mode (int) – 所需 EPD 模式 - 0:M5.Lcd.EPDMode.EPD_QUALITY - 1:M5.Lcd.EPDMode.EPD_TEXT - 2:M5.Lcd.EPDMode.EPD_FAST - 3:M5.Lcd.EPDMode.EPD_FASTEST

注意:仅适用于具有 EPD 功能的设备。

UiFlow2 代码块:

setEpdMode.png

MicroPython 代码块:

Display.setEpdMode(2)
isEPD()

检查显示屏是否为电子墨水屏(EPD)。

返回是否为 EPD:

如果显示屏为 EPD,则返回 True,否则返回 False。

返回类型:

bool

UiFlow2 代码块:

isEPD.png

MicroPython 代码块:

Display.isEPD()
setFont(font)

置显示字体。

参数:

font –

支持内置字体和字体文件(例如 .bin(lvgl 二进制字体格式)或 .vlw(Processing 字体格式))。可用的内置字体如下:

字体名称

状态

替代字体

不支持的设备

M5.Lcd.FONTS.ASCII7

❌ 已废弃

M5.Lcd.FONTS.Montserrat12

M5.Lcd.FONTS.DejaVu9

❌ 已废弃

M5.Lcd.FONTS.Montserrat12

M5.Lcd.FONTS.DejaVu12

❌ 已废弃

M5.Lcd.FONTS.Montserrat14

M5.Lcd.FONTS.DejaVu18

❌ 已废弃

M5.Lcd.FONTS.Montserrat18

M5.Lcd.FONTS.DejaVu24

❌ 已废弃

M5.Lcd.FONTS.Montserrat24

M5.Lcd.FONTS.DejaVu40

❌ 已废弃

M5.Lcd.FONTS.Montserrat40

M5.Lcd.FONTS.DejaVu56

❌ 已废弃

M5.Lcd.FONTS.Montserrat44

M5.Lcd.FONTS.DejaVu72

❌ 已废弃

M5.Lcd.FONTS.Montserrat48

M5.Lcd.FONTS.EFontCN24

❌ 已废弃

M5.Lcd.FONTS.AlibabaPuHuiTiCN24

M5.Lcd.FONTS.EFontJA24

❌ 已废弃

M5.Lcd.FONTS.AlibabaSansJA24

M5.Lcd.FONTS.EFontKR24

❌ 已废弃

M5.Lcd.FONTS.AlibabaSansKR24

M5.Lcd.FONTS.Montserrat12

✅ 推荐

M5.Lcd.FONTS.Montserrat14

✅ 推荐

M5.Lcd.FONTS.Montserrat16

✅ 推荐

M5.Lcd.FONTS.Montserrat18

✅ 推荐

M5.Lcd.FONTS.Montserrat24

✅ 推荐

M5.Lcd.FONTS.Montserrat40

✅ 推荐

M5.Lcd.FONTS.Montserrat48

✅ 推荐

M5.Lcd.FONTS.AlibabaPuHuiTiCN24

✅ 推荐

M5STACK_StickC_PLUS, M5STACK_CoreInk, M5STACK_StickC,

M5STACK_Atom_Lite, M5STACK_Stamp_PICO, M5STACK_Atom_Matrix,

M5STACK_AtomU, M5STACK_Atom_Echo, M5STACK_NanoC6

M5.Lcd.FONTS.AlibabaSansJA24

✅ 推荐

M5.Lcd.FONTS.AlibabaSansKR24

✅ 推荐

UiFlow2 代码块:

setFont.png

MicroPython 代码块:

Display.setFont(M5.Lcd.FONTS.DejaVu18)
setTextColor(fgcolor, bgcolor)

设置文本颜色和背景颜色。

参数:
  • fgcolor (int) – 文本颜色,RGB888 格式。默认值为 0(黑色)。

  • bgcolor (int) – 背景颜色,RGB888 格式。默认值为 0(黑色)

UiFlow2 代码块:

setTextColor.png

MicroPython 代码块:

Display.setTextColor(0xFF0000, 0x000000)
setTextScroll(scroll)

启用或禁用文本滚动。

参数:

scroll (bool) – 设置为 True 启用文本滚动,设置为 False 禁用文本滚动。默认值为 False。

UiFlow2 代码块:

setTextScroll.png

MicroPython 代码块:

Display.setTextScroll(True)
setTextSize(size)

设置文本的大小。

参数:

size (int) – 期望的文本大小。

UiFlow2 代码块:

setTextSize.png

MicroPython 代码块:

Display.setTextSize(2)
setCursor(x, y)

设置光标位置。

参数:
  • x (int) – 光标的水平位置。默认值为 0。

  • y (int) – 光标的垂直位置。默认值为 0。

UiFlow2 代码块:

setCursor.png

MicroPython 代码块:

Display.setCursor(10, 20)
clear(color)

使用指定颜色清空显示屏

参数:

color (int) – 填充颜色,使用 RGB888 格式(默认值为 0)。

警告

避免在循环或事件处理函数中调用 clear(),它会重绘所有像素,造成明显闪烁。更新动态内容时,可用 fillRect() 仅擦除变化区域,再绘制新内容。

UiFlow2 代码块:

clear.png

MicroPython 代码块:

Display.clear(0xFFFFFF)
fillScreen(color)

用指定颜色填充整个屏幕。

参数:

color (int) – 填充颜色,使用 RGB888 格式(默认值为 0)。

警告

避免在循环或事件处理函数中调用 fillScreen(),它会重绘所有像素,造成明显闪烁。静态背景应在初始化时绘制一次;更新动态内容时,可用 fillRect() 仅清除变化区域。

UiFlow2 代码块:

fillScreen.png

MicroPython 代码块:

Display.fillScreen(0xFF0000)
drawPixel(x, y, color)

在屏幕上绘制单个像素。

参数:
  • x (int) – 像素的水平坐标。默认值为 -1

  • y (int) – 像素的垂直坐标。默认值为 -1

  • color (int) – 素的颜色,RGB888 格式。默认值为 0

UiFlow2 代码块:

drawPixel.png

MicroPython 代码块:

Display.drawPixel(50, 50, 0x00FF00)
drawCircle(x, y, r, color)

绘制一个圆。

参数:
  • x (int) – 圆心的 x 坐标。默认值为 -1。

  • y (int) – 圆心的 y 坐标。默认值为 -1。

  • r (int) – 圆的半径。默认值为 -1。

  • color (int) – 圆的颜色,RGB888 格式。默认值为 0。

UiFlow2 代码块:

drawCircle.png

MicroPython 代码块:

Display.drawCircle(60, 60, 20, 0x0000FF)
fillCircle(x, y, r, color)

绘制一个实心圆。

参数:
  • x (int) – 圆心的 x 坐标。默认值为 -1。

  • y (int) – 圆心的 y 坐标。默认值为 -1。

  • r (int) – 圆的半径。默认值为 -1。

  • color (int) – 填充颜色,使用 RGB888 格式(默认值为 0)。

UiFlow2 代码块:

fillCircle.png

MicroPython 代码块:

Display.fillCircle(60, 60, 20, 0x00FFFF)
drawEllipse(x, y, rx, ry, color)

绘制一个椭圆。

参数:
  • x (int) – 椭圆中心的 x 坐标。默认值为 -1。

  • y (int) – 椭圆中心的 y 坐标。默认值为 -1。

  • rx (int) – 椭圆的水平半径。默认值为 -1。

  • ry (int) – 椭圆的垂直半径。默认值为 -1。

  • color (int) – 椭圆颜色,RGB888 格式。默认值为 0。

UiFlow2 代码块:

drawEllipse.png

MicroPython 代码块:

Display.drawEllipse(80, 40, 30, 20, 0xFF00FF)
fillEllipse(x, y, rx, ry, color)

绘制一个实心椭圆。

参数:
  • x (int) – 椭圆中心的 x 坐标。默认值为 -1。

  • y (int) – 椭圆中心的 y 坐标。默认值为 -1。

  • rx (int) – 椭圆的水平半径。默认值为 -1。

  • ry (int) – 椭圆的垂直半径。默认值为 -1。

  • color (int) – 填充颜色,使用 RGB888 格式(默认值为 0)。

UiFlow2 代码块:

fillEllipse.png

MicroPython 代码块:

Display.fillEllipse(80, 40, 30, 20, 0x00FF00)
drawLine(x0, y0, x1, y1, color)

绘制一条直线。

参数:
  • x0 (int) – 直线起点坐标 x,默认值为 -1。

  • y0 (int) – 直线起点坐标 y,默认值为 -1。

  • x1 (int) – 直线终点坐标 x,默认值为 -1。

  • y1 (int) – 直线终点坐标 y,默认值为 -1。

  • color (int) – 线颜色,RGB888 格式,默认值为 0。

UiFlow2 代码块:

drawLine.png

MicroPython 代码块:

Display.drawLine(10, 10, 100, 100, 0xFF0000)
drawRect(x, y, w, h, color)

绘制一个矩形。

参数:
  • x (int) – 形左上角坐标 x,默认值为 -1。”

  • y (int) – 矩形左上角坐标 y,默认值为 -1。

  • w (int) – 矩形的宽度,默认值为 -1。

  • h (int) – 矩形的高度,默认值为 -1。

  • color (int) – 矩形颜色,RGB888 格式,默认值为 0。

UiFlow2 代码块:

drawRect.png

MicroPython 代码块:

display.drawRect(20, 20, 80, 50, 0x00FF00)
fillRect(x, y, w, h, color)

绘制一个填充矩形。

参数:
  • x (int) – 形左上角坐标 x,默认值为 -1。”

  • y (int) – 矩形左上角坐标 y,默认值为 -1。

  • w (int) – 矩形的宽度,默认值为 -1。

  • h (int) – 矩形的高度,默认值为 -1。

  • color (int) – 填充颜色,使用 RGB888 格式(默认值为 0)。

UiFlow2 代码块:

fillRect.png

MicroPython 代码块:

Display.fillRect(20, 20, 80, 50, 0x0000FF)
drawRoundRect(x, y, w, h, r, color)

绘制一个圆角矩形。

参数:
  • x (int) – 形左上角坐标 x,默认值为 -1。”

  • y (int) – 矩形左上角坐标 y,默认值为 -1。

  • w (int) – 矩形的宽度,默认值为 -1。

  • h (int) – 矩形的高度,默认值为 -1。

  • r (int) – 圆角半径,默认值为 -1。

  • color (int) – 矩形颜色,RGB888 格式,默认值为 0。

UiFlow2 代码块:

drawRoundRect.png

MicroPython 代码块:

Display.drawRoundRect(30, 30, 60, 40, 10, 0xFF00FF)
fillRoundRect(x, y, w, h, r, color)

绘制一个填充圆角矩形。

参数:
  • x (int) – 形左上角坐标 x,默认值为 -1。”

  • y (int) – 矩形左上角坐标 y,默认值为 -1。

  • w (int) – 矩形的宽度,默认值为 -1。

  • h (int) – 矩形的高度,默认值为 -1。

  • r (int) – 圆角半径,默认值为 -1。

  • color (int) – 填充颜色,使用 RGB888 格式(默认值为 0)。

UiFlow2 代码块:

fillRoundRect.png

MicroPython 代码块:

Display.fillRoundRect(30, 30, 60, 40, 10, 0x00FFFF)
drawTriangle(x0, y0, x1, y1, x2, y2, color)

绘制一个三角形。

参数:
  • x0 (int) – 第一个顶点的坐标 x,默认值为 -1。

  • y0 (int) – 第一个顶点的坐标 y,默认值为 -1。

  • x1 (int) – 第二个顶点的坐标 x,默认值为 -1。

  • y1 (int) – 第二个顶点的坐标 y,默认值为 -1

  • x2 (int) – 第三个顶点的坐标 x,默认值为 -1。

  • y2 (int) – 第三个顶点的坐标 y,默认值为 -1。

  • color (int) – 三角形颜色,RGB888 格式,默认值为 0。

UiFlow2 代码块:

drawTriangle.png

MicroPython 代码块:

Display.drawTriangle(10, 10, 50, 80, 90, 10, 0xFF0000)
fillTriangle(x0, y0, x1, y1, x2, y2, color)

绘制一个填充三角形。

参数:
  • x0 (int) – 第一个顶点的坐标 x,默认值为 -1。

  • y0 (int) – 第一个顶点的坐标 y,默认值为 -1。

  • x1 (int) – 第二个顶点的坐标 x,默认值为 -1。

  • y1 (int) – 第二个顶点的坐标 y,默认值为 -1

  • x2 (int) – 第三个顶点的坐标 x,默认值为 -1。

  • y2 (int) – 第三个顶点的坐标 y,默认值为 -1。

  • color (int) – 填充颜色,使用 RGB888 格式(默认值为 0)。

UiFlow2 代码块:

fillTriangle.png

MicroPython 代码块:

Display.fillTriangle(10, 10, 50, 80, 90, 10, 0x00FF00)
drawArc(x, y, r0, r1, angle0, angle1, color)

绘制一个弧线。

参数:
  • x (int) – 弧线的中心坐标 x,默认值为 -1。

  • y (int) – 弧线的中心坐标 y,默认值为 -1。

  • r0 (int) – 第一个半径,默认值为 -1。

  • r1 (int) – 第二个半价,默认值为 -1。

  • angle0 (int) – 弧线的起始角度(单位:度),默认值为 -1。

  • angle1 (int) – 弧线的终止角度(单位:度),默认值为 -1。

  • color (int) – 弧线颜色,RGB888 格式,默认值为 0。

UiFlow2 代码块:

drawArc.png

MicroPython 代码块:

Display.drawArc(50, 50, 20, 30, 0, 180, 0xFF0000)
fillArc(x, y, r0, r1, angle0, angle1, color)

绘制一个填充弧线。

参数:
  • x (int) – 弧线的中心坐标 x,默认值为 -1。

  • y (int) – 弧线的中心坐标 y,默认值为 -1。

  • r0 (int) – 第一个半径,默认值为 -1。

  • r1 (int) – 第二个半价,默认值为 -1。

  • angle0 (int) – 弧线的起始角度(单位:度),默认值为 -1。

  • angle1 (int) – 弧线的终止角度(单位:度),默认值为 -1。

  • color (int) – 填充颜色,使用 RGB888 格式(默认值为 0)。

UiFlow2 代码块:

fillArc.png

MicroPython 代码块:

Display.fillArc(50, 50, 20, 30, 0, 180, 0x00FF00)
drawEllipseArc(x, y, r0x, r1x, r0y, r1y, angle0, angle1, color)

绘制一个椭圆弧线。

参数:
  • x (int) – 弧线的中心坐标 x,默认值为 -1。

  • y (int) – 弧线的中心坐标 y,默认值为 -1。

  • r0x (int) – 第一个水平半径,默认值为 -1。

  • r1x (int) – 第二个水平半径,默认值为 -1。

  • r0y (int) – 第一个垂直半径,默认值为 -1。

  • r1y (int) – 二个垂直半径,默认值为 -1。”

  • angle0 (int) – 弧线的起始角度(单位:度),默认值为 -1。

  • angle1 (int) – 椭圆弧线的终止角度(单位:度),默认值为 0。

  • color (int) – 弧线颜色,RGB888 格式,默认值为 0。

UiFlow2 代码块:

drawEllipseArc.png

MicroPython 代码块:

Display.drawEllipseArc(50, 50, 20, 40, 10, 30, 0, 180, 0xFF00FF)
fillEllipseArc(x, y, r0x, r1x, r0y, r1y, angle0, angle1, color)

绘制一个填充椭圆弧线。

参数:
  • x (int) – 弧线的中心坐标 x,默认值为 -1。

  • y (int) – 弧线的中心坐标 y,默认值为 -1。

  • r0x (int) – 第一个水平半径,默认值为 -1。

  • r1x (int) – 第二个水平半径,默认值为 -1。

  • r0y (int) – 第一个垂直半径,默认值为 -1。

  • r1y (int) – 二个垂直半径,默认值为 -1。”

  • angle0 (int) – 弧线的起始角度(单位:度),默认值为 -1。

  • angle1 (int) – 椭圆弧线的终止角度(单位:度),默认值为 0。

  • color (int) – 填充颜色,使用 RGB888 格式(默认值为 0)。

UiFlow2 代码块:

fillEllipseArc.png

MicroPython 代码块:

Display.fillEllipseArc(50, 50, 20, 40, 10, 30, 0, 180, 0x00FFFF)
drawQR(text, x, y, w, version)

绘制二维码。

参数:
  • text (str) – 二维码内容

  • x (int) – 二维码显示的起始坐标 x,默认值为 0。

  • y (int) – 二维码显示的起始坐标 y,默认值为 0。

  • w (int) – 二维码的宽度,默认值为 0。

  • version (int) – 二维码版本(默认值为 1,范围:0~38)。

UiFlow2 代码块:

drawQR.png

MicroPython 代码块:

Display.drawQR("Hello", 0, 0, 200)
drawPng(img, x, y, maxW, maxH, offX, offY, scaleX, scaleY)

绘制 PNG 图片。

参数:
  • img (str) – 图片文件路径或已打开的图片数据。

  • x (int) – 图片显示的起始坐标 x,默认值为 0。

  • y (int) – 图片显示的起始坐标 y,默认值为 0。

  • maxW (int) – 要绘制的宽度

  • maxH (int) – 要绘制的高度

  • offX (int) – 图片中起始的偏移量 x,默认值为 0。

  • offY (int) – 图片中起始的偏移量 y,默认值为 0。

  • scaleX (bool) – 是否水平缩放图片,默认值分别为 True。

  • scaleY (bool) – 是否垂直缩放图片,默认值分别为 False。

UiFlow2 代码块:

drawPng.png

MicroPython 代码块:

Display.drawPng("res/img/uiflow.png", 0, 0)

示例:

Display.drawPng("res/img/uiflow.png", 0, 0)
img = open("res/img/uiflow.png", "b")
img.seek(0)
Display.drawPng(img.read(), 0, 100)
img.close()
drawJpg(img, x, y, maxW, maxH, offX, offY)

绘制 JPG 图片。

参数:
  • img – 图片文件路径或已打开的图片数据。

  • x (int) – 图片显示的起始坐标 x,默认值为 0。

  • y (int) – 图片显示的起始坐标 y,默认值为 0。

  • maxW (int) – 要绘制的宽度

  • maxH (int) – 要绘制的高度

  • offX (int) – 图片中起始的偏移量 x,默认值为 0。

  • offY (int) – 图片中起始的偏移量 y,默认值为 0。

UiFlow2 代码块:

drawJpg.png

MicroPython 代码块:

Display.drawJpg("res/img/uiflow.jpg", 0, 0)

示例:

Display.drawJpg("res/img/uiflow.jpg", 0, 0)
img = open("res/img/uiflow.jpg", "b")
img.seek(0)
Display.drawJpg(img.read(), 0, 100)
img.close()
drawBmp(img, x, y, maxW, maxH, offX, offY)

绘制 BMP 图片。

参数:
  • img – 图片文件路径或已打开的图片数据。

  • x (int) – 图片显示的起始坐标 x,默认值为 0。

  • y (int) – 图片显示的起始坐标 y,默认值为 0。

  • maxW (int) – 要绘制的宽度

  • maxH (int) – 要绘制的高度

  • offX (int) – 图片中起始的偏移量 x,默认值为 0。

  • offY (int) – 图片中起始的偏移量 y,默认值为 0。

UiFlow2 代码块:

drawBmp.png

MicroPython 代码块:

Display.drawBmp("res/img/uiflow.bmp", 0, 0)

示例:

Display.drawBmp("res/img/uiflow.bmp", 0, 0)
img = open("res/img/uiflow.bmp", "b")
img.seek(0)
Display.drawBmp(img.read(), 0, 100)
img.close()
drawImage(img, x, y, maxW, maxH, offX, offY)

绘制图片。

参数:
  • img – 图片文件路径或已打开的图片数据。

  • x (int) – 图片显示的起始坐标 x,默认值为 0。

  • y (int) – 图片显示的起始坐标 y,默认值为 0。

  • maxW (int) – 要绘制的宽度

  • maxH (int) – 要绘制的高度

  • offX (int) – 图片中起始的偏移量 x,默认值为 0。

  • offY (int) – 图片中起始的偏移量 y,默认值为 0。

UiFlow2 代码块:

drawImage.png

MicroPython 代码块:

img = open("res/img/uiflow.jpg", "b")

示例:

img = open("res/img/uiflow.jpg", "b")
img.seek(0)
Display.drawImage(img.read(), 0, 0)
img.close()
drawRawBuf(buf, x, y, w, h, len, swap)

绘制缓冲区中的图片。

参数:
  • buf – 图像数据

  • x (int) – 图片显示的起始坐标 x,默认值为 0。

  • y (int) – 图片显示的起始坐标 y,默认值为 0。

  • w (int) – 图像宽

  • h (int) – 图像高

  • len (int) – 图像大小

  • swap (bool) – 是否反色显示(默认值为 False)。

UiFlow2 代码块:

drawRawBuf.png

MicroPython 代码块:

Display.drawRawBuf(raw_buf, 0, 0, 100, 100, len(raw_buf), swap=False)

示例:

width, height = 40, 30
green565 = 0x07E0
raw_buf = bytearray(width * height * 2)
for i in range(width * height):
    raw_buf[2*i]   = (green565 >> 8) & 0xFF
    raw_buf[2*i+1] = green565 & 0xFF
Display.drawRawBuf(raw_buf, 100, 100, width, height, len(raw_buf), swap=False)
print(text, color)

显示字符串(不支持格式化)。

参数:
  • text (str) – 要显示的字符串。

  • color (int) – 颜色值,RGB888 格式。

UiFlow2 代码块:

print.png

MicroPython 代码块:

Display.print("Hello World", color=0xFF0000)
printf(text)

显示格式化字符串。

参数:

text (str) – 要显示的格式化字符串。

UiFlow2 代码块:

printf.png

MicroPython 代码块:

Display.printf("Value: %d" % 100)
newCanvas(w, h, bpp, psram)

创建一个离屏画布。先在画布上绘制完整的一帧,再调用一次 push(x, y) 显示。应重复使用返回的画布对象,避免在主循环中反复创建。

参数:
  • w (int) – 画布宽

  • h (int) – 画布高

  • bpp (int) – 颜色深度

  • psram (bool) – 使用 PSRAM

返回:

创建画布对象。

UiFlow2 代码块:

newCanvas.png

MicroPython 代码块:

w1 = Display.newCanvas(w=100, h=100, bpp=16)

示例:

w1 = Display.newCanvas(w=100, h=100, bpp=16)
w1.drawImage("res/img/uiflow.jpg", 80, 0)
w1.push(30, 0)
startWrite()

开始向显示屏写入内容。

UiFlow2 代码块:

startWrite.png

MicroPython 代码块:

Display.startWrite()

示例:

Display.startWrite()
Display.drawPixel(10, 10, 0xFF0000)
Display.endWrite()
endWrite()

结束显示屏写入。

UiFlow2 代码块:

endWrite.png

MicroPython 代码块:

Display.endWrite()