Line (lv_line)
Overview
The Line object is capable of drawing straight lines between a set of points.
Parts and Styles
LV_PART_MAIN
uses all the typical background properties and line style properties.
Usage
Set points
The points have to be stored in an lv_point_t
array and passed to
the object by the lv_line_set_points(lines, point_array, point_cnt)
function.
Their coordinates can either be specified as raw pixel coordinates
(e.g. {5, 10}
), or as a percentage of the line's bounding box using
lv_pct(x). In the latter case, the line's width/height may need to
be set explicitly using lv_obj_set_width/height
, as percentage
values do not automatically expand the bounding box.
Auto-size
By default, the Line's width and height are set to LV_SIZE_CONTENT
.
This means it will automatically set its size to fit all the points. If
the size is set explicitly, parts on the line may not be visible.
Invert y
By default, the y == 0 point is in the top of the object. It might be counter-intuitive in some cases so the y coordinates can be inverted with lv_line_set_y_invert(line, true). In this case, y == 0 will be the bottom of the object. y invert is disabled by default.
Events
Only the Generic events are sent by the object type.
See the events of the Base object too.
Learn more about Events.
Keys
No Keys are processed by the object type.
Learn more about Keys.
Example
Simple Line
C code
View on 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_screen_active());
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.screen_active())
line1.set_points(line_points, 5) # Set the points
line1.add_style(style_line, 0)
line1.center()