线条 (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
# 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
Variables
-
const lv_obj_class_t
lv_line_class¶
-
struct
lv_line_t¶