M5Line

M5Line 是一个可在用户界面中绘制直线的控件,可用于绘制形状或连接多个点。

UiFlow2 示例

连接点

在 UiFlow2 中打开 cores3_line_example.m5f2 项目。

本示例将创建一条用于连接多个点的线段。

UiFlow2 代码块:

cores3_line_example.png

示例输出:

None

MicroPython 示例

连接点

本示例将创建一条用于连接多个点的线段。

MicroPython 代码块:

 1# SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
 2#
 3# SPDX-License-Identifier: MIT
 4
 5import os, sys, io
 6import M5
 7from M5 import *
 8import m5ui
 9import lvgl as lv
10
11
12page0 = None
13line0 = None
14
15
16def setup():
17    global page0, line0
18
19    M5.begin()
20    Widgets.setRotation(1)
21    m5ui.init()
22    page0 = m5ui.M5Page(bg_c=0xFFFFFF)
23    line0 = m5ui.M5Line(
24        points=[5, 5, 70, 70, 120, 10, 180, 60, 190, 70, 200, 80, 210, 90, 220, 100],
25        width=7,
26        color=0x2196F3,
27        rounded=True,
28        parent=page0,
29    )
30
31    page0.screen_load()
32
33
34def loop():
35    global page0, line0
36    M5.update()
37    if M5.Touch.getCount():
38        line0.add_point(M5.Touch.getX(), M5.Touch.getY())
39
40
41if __name__ == "__main__":
42    try:
43        setup()
44        while True:
45            loop()
46    except (Exception, KeyboardInterrupt) as e:
47        try:
48            m5ui.deinit()
49            from utility import print_error_msg
50
51            print_error_msg(e)
52        except ImportError:
53            print("please update to latest firmware")

示例输出:

None

API参考

M5Line

class m5ui.line.M5Line(*args, **kwargs)

基类:line

创建一个直线对象。

参数:
  • points (list) – 点列表,每个点由一对 x、y 坐标组成。

  • width (int) – 线宽。

  • color (int) – 线的颜色(十六进制)。

  • rounded (bool) – 若为 True,则线段端点将为圆形;若为 False,则端点将为方形。

  • parent (lv.obj) – 要将线附加到的父对象;若未指定,则附加到默认屏幕。

MicroPython 代码块:

from m5ui import M5Line
import lvgl as lv

m5ui.init()
line_0 = M5Line(
    points=[5, 5, 70, 70, 120, 10, 180, 60, 240, 20],
    width=2,
    color=0x2196F3,
    rounded=True,
    parent=page0,
)
set_line_color(color, opa, part)

设置线的点列表。

参数:
  • color (int) – 要设置的颜色。

  • opa (int) – 线宽。

  • part (int) – 要应用样式的对象部分(例如,lv.PART.MAIN)。

UiFlow2 代码块:

set_line_color.png

MicroPython 代码块:

line_0.set_line_color(0xFF0000, 255, lv.PART.MAIN)
set_style_line_width(width, part)

设置线的宽度。

参数:
  • width (int) – 线的宽度。

  • part (int) – 要应用样式的对象部分(例如,lv.PART.MAIN)。

UiFlow2 代码块:

set_style_line_width.png

MicroPython 代码块:

line_0.set_style_line_width(2, lv.PART.MAIN)
set_flag(flag, value)

设置对象的标志。如果 value 为 True,则添加标志;如果为 False,则移除标志。

参数:
  • flag (int) – 要设置的标志。

  • value (bool) – 如果为 True,则添加标志;如果为 False,则移除标志。

返回:

None

UiFlow2 代码块:

set_flag.png

MicroPython 代码块:

button_0.set_flag(lv.obj.FLAG.HIDDEN, True)
set_pos(x, y)

设置线的位置。

参数:
  • x (int) – 线的 x 坐标。

  • y (int) – 线的 y 坐标。

UiFlow2 代码块:

set_pos.png

MicroPython 代码块:

line_0.set_pos(100, 100)
set_x(x)

设置线的 x 坐标。

参数:

x (int) – 线的 x 坐标。

UiFlow2 代码块:

set_x.png

MicroPython 代码块:

line_0.set_x(100)
set_y(y)

设置线的 y 坐标。

参数:

y (int) – 线的 y 坐标。

UiFlow2 代码块:

set_y.png

MicroPython 代码块:

line_0.set_y(100)
align_to(obj, align, x, y)

将线对齐到另一个对象。

参数:
  • obj (lv.obj) – 要对齐到的对象。

  • align (int) – 对齐类型。

  • x (int) – 相对于对齐对象的 x 偏移量。

  • y (int) – 相对于对齐对象的 y 偏移量。

UiFlow2 代码块:

align_to.png

MicroPython 代码块:

line_0.align_to(page_0, lv.ALIGN.CENTER, 0, 0)
set_points(points)

设置线的点列表。

参数:

points (list) – 点列表,每个点由一对 x、y 坐标组成。

UiFlow2 代码块:

set_points.png

MicroPython 代码块:

line_0.set_points([0, 0, 100, 100, 200, 50])
add_point(x, y)

在线的末端添加一个点。

参数:
  • x (int) – 点的 x 坐标。

  • y (int) – 点的 y 坐标。

UiFlow2 代码块:

add_point.png

MicroPython 代码块:

line_0.add_point(100, 100)