mirror of
https://github.com/lvgl/lvgl.git
synced 2025-01-14 06:42:58 +08:00
90 lines
3.7 KiB
C
90 lines
3.7 KiB
C
#include "../../lv_examples.h"
|
|
#if LV_USE_SCALE && LV_BUILD_EXAMPLES
|
|
|
|
/**
|
|
* An vertical scale with section and custom styling
|
|
*/
|
|
void lv_example_scale_2(void)
|
|
{
|
|
lv_obj_t * scale = lv_scale_create(lv_screen_active());
|
|
lv_obj_set_size(scale, 60, 200);
|
|
lv_scale_set_label_show(scale, true);
|
|
lv_scale_set_mode(scale, LV_SCALE_MODE_VERTICAL_RIGHT);
|
|
lv_obj_center(scale);
|
|
|
|
lv_scale_set_total_tick_count(scale, 21);
|
|
lv_scale_set_major_tick_every(scale, 5);
|
|
|
|
lv_obj_set_style_length(scale, 10, LV_PART_INDICATOR);
|
|
lv_obj_set_style_length(scale, 5, LV_PART_ITEMS);
|
|
lv_scale_set_range(scale, 0, 100);
|
|
|
|
static const char * custom_labels[] = {"0 °C", "25 °C", "50 °C", "75 °C", "100 °C", NULL};
|
|
lv_scale_set_text_src(scale, custom_labels);
|
|
|
|
static lv_style_t indicator_style;
|
|
lv_style_init(&indicator_style);
|
|
|
|
/* Label style properties */
|
|
lv_style_set_text_font(&indicator_style, LV_FONT_DEFAULT);
|
|
lv_style_set_text_color(&indicator_style, lv_palette_darken(LV_PALETTE_BLUE, 3));
|
|
|
|
/* Major tick properties */
|
|
lv_style_set_line_color(&indicator_style, lv_palette_darken(LV_PALETTE_BLUE, 3));
|
|
lv_style_set_width(&indicator_style, 10U); /*Tick length*/
|
|
lv_style_set_line_width(&indicator_style, 2U); /*Tick width*/
|
|
lv_obj_add_style(scale, &indicator_style, LV_PART_INDICATOR);
|
|
|
|
static lv_style_t minor_ticks_style;
|
|
lv_style_init(&minor_ticks_style);
|
|
lv_style_set_line_color(&minor_ticks_style, lv_palette_lighten(LV_PALETTE_BLUE, 2));
|
|
lv_style_set_width(&minor_ticks_style, 5U); /*Tick length*/
|
|
lv_style_set_line_width(&minor_ticks_style, 2U); /*Tick width*/
|
|
lv_obj_add_style(scale, &minor_ticks_style, LV_PART_ITEMS);
|
|
|
|
static lv_style_t main_line_style;
|
|
lv_style_init(&main_line_style);
|
|
/* Main line properties */
|
|
lv_style_set_line_color(&main_line_style, lv_palette_darken(LV_PALETTE_BLUE, 3));
|
|
lv_style_set_line_width(&main_line_style, 2U); // Tick width
|
|
lv_obj_add_style(scale, &main_line_style, LV_PART_MAIN);
|
|
|
|
/* Add a section */
|
|
static lv_style_t section_minor_tick_style;
|
|
static lv_style_t section_label_style;
|
|
static lv_style_t section_main_line_style;
|
|
|
|
lv_style_init(§ion_label_style);
|
|
lv_style_init(§ion_minor_tick_style);
|
|
lv_style_init(§ion_main_line_style);
|
|
|
|
/* Label style properties */
|
|
lv_style_set_text_font(§ion_label_style, LV_FONT_DEFAULT);
|
|
lv_style_set_text_color(§ion_label_style, lv_palette_darken(LV_PALETTE_RED, 3));
|
|
|
|
lv_style_set_line_color(§ion_label_style, lv_palette_darken(LV_PALETTE_RED, 3));
|
|
lv_style_set_line_width(§ion_label_style, 5U); /*Tick width*/
|
|
|
|
lv_style_set_line_color(§ion_minor_tick_style, lv_palette_lighten(LV_PALETTE_RED, 2));
|
|
lv_style_set_line_width(§ion_minor_tick_style, 4U); /*Tick width*/
|
|
|
|
/* Main line properties */
|
|
lv_style_set_line_color(§ion_main_line_style, lv_palette_darken(LV_PALETTE_RED, 3));
|
|
lv_style_set_line_width(§ion_main_line_style, 4U); /*Tick width*/
|
|
|
|
/* Configure section styles */
|
|
lv_scale_section_t * section = lv_scale_add_section(scale);
|
|
lv_scale_section_set_range(section, 75, 100);
|
|
lv_scale_section_set_style(section, LV_PART_INDICATOR, §ion_label_style);
|
|
lv_scale_section_set_style(section, LV_PART_ITEMS, §ion_minor_tick_style);
|
|
lv_scale_section_set_style(section, LV_PART_MAIN, §ion_main_line_style);
|
|
|
|
lv_obj_set_style_bg_color(scale, lv_palette_main(LV_PALETTE_BLUE_GREY), 0);
|
|
lv_obj_set_style_bg_opa(scale, LV_OPA_50, 0);
|
|
lv_obj_set_style_pad_left(scale, 8, 0);
|
|
lv_obj_set_style_radius(scale, 8, 0);
|
|
lv_obj_set_style_pad_ver(scale, 20, 0);
|
|
}
|
|
|
|
#endif
|