线条 (lv_line)

概述

线条对象可以在一组点之间绘制直线。

部件和样式

  • LV_PART_MAIN 使用所有典型的背景属性和线条样式属性。

用法

设置点

点需要存储在一个 lv_point_t 数组中,并通过 lv_line_set_points(lines, point_array, point_cnt) 函数传递给对象。

自动调整大小

默认情况下,线条的宽度和高度设置为 LV_SIZE_CONTENT。这意味着它会自动调整大小以适应所有点。如果显式设置了大小,则线条的某些部分可能不可见。

反转 y 轴

默认情况下,y == 0 点位于对象的顶部。在某些情况下,这可能不直观,因此可以通过 lv_line_set_y_invert(line, true) 反转 y 坐标。在这种情况下,y == 0 将位于对象的底部。 y 反转 默认是禁用的。

事件

此对象类型仅发送 通用事件

也可以查看 基础对象 的事件。

了解更多关于 事件 的信息。

按键

此对象类型不处理 按键

了解更多关于 按键 的信息。

示例

Simple Line

C code  

 GitHub
#include "../../lv_examples.h"
#if LV_USE_LINE && LV_BUILD_EXAMPLES

void lv_example_line_1(void)
{
    /*Create an array for the points of the line*/
    static lv_point_t line_points[] = { {5, 5}, {70, 70}, {120, 10}, {180, 60}, {240, 10} };

    /*Create style*/
    static lv_style_t style_line;
    lv_style_init(&style_line);
    lv_style_set_line_width(&style_line, 8);
    lv_style_set_line_color(&style_line, lv_palette_main(LV_PALETTE_BLUE));
    lv_style_set_line_rounded(&style_line, true);

    /*Create a line and apply the new style*/
    lv_obj_t * line1;
    line1 = lv_line_create(lv_scr_act());
    lv_line_set_points(line1, line_points, 5);     /*Set the points*/
    lv_obj_add_style(line1, &style_line, 0);
    lv_obj_center(line1);
}

#endif

MicroPython code  

 GitHub Simulator
# Create an array for the points of the line
line_points = [ {"x":5, "y":5},
                {"x":70, "y":70},
                {"x":120, "y":10},
                {"x":180, "y":60},
                {"x":240, "y":10}]

# Create style
style_line = lv.style_t()
style_line.init()
style_line.set_line_width(8)
style_line.set_line_color(lv.palette_main(lv.PALETTE.BLUE))
style_line.set_line_rounded(True)

# Create a line and apply the new style
line1 = lv.line(lv.scr_act())
line1.set_points(line_points, 5)     # Set the points
line1.add_style(style_line, 0)
line1.center()


API

Functions

lv_obj_t *lv_line_create(lv_obj_t *parent)

Create a line object

Parameters

parent -- pointer to an object, it will be the parent of the new line

Returns

pointer to the created line

void lv_line_set_points(lv_obj_t *obj, const lv_point_t points[], uint16_t point_num)

Set an array of points. The line object will connect these points.

Parameters
  • obj -- pointer to a line object

  • points -- an array of points. Only the address is saved, so the array needs to be alive while the line exists

  • point_num -- number of points in 'point_a'

void lv_line_set_y_invert(lv_obj_t *obj, bool en)

Enable (or disable) the y coordinate inversion. If enabled then y will be subtracted from the height of the object, therefore the y = 0 coordinate will be on the bottom.

Parameters
  • obj -- pointer to a line object

  • en -- true: enable the y inversion, false:disable the y inversion

bool lv_line_get_y_invert(const lv_obj_t *obj)

Get the y inversion attribute

Parameters

obj -- pointer to a line object

Returns

true: y inversion is enabled, false: disabled

Variables

const lv_obj_class_t lv_line_class
struct lv_line_t

Public Members

lv_obj_t obj
const lv_point_t *point_array

Pointer to an array with the points of the line

uint16_t point_num

Number of points in 'point_array'

uint8_t y_inv

1: y == 0 will be on the bottom