Description
Problem with meter widget when dimension is bigger than 213 px. I’m preparing a car RPM meter. If I set the width and height to a value bigger than 213px the initial rendering of the meter stop, the interface freeze while the main program continue running. The meter is displayed correctly up to 213px. Same problem with a meter displaying an analog watch. Both meters are centered in the screen.
What MCU/Processor/Board and compiler are you using?
ESP32 on WT32-SC01 v3.2, 480x320px ST7796S display
What LVGL version are you using?
V8.3.1
What do you want to achieve?
Obtain a full height meter
What have you tried so far?
Code to reproduce
Add a code snippet which can run in the simulator. It should contain only the relevant code that compiles without errors when separated from your main code base.
The code block(s) should be formatted like:
metercar = lv_meter_create(wp);
lv_obj_center(metercar);
lv_obj_set_size(metercar, 215, 215);
/*Remove the circle from the middle*/
lv_obj_remove_style(metercar, NULL, LV_PART_INDICATOR);
/*Add a scale first*/
lv_meter_scale_t *scale = lv_meter_add_scale(metercar);
lv_meter_set_scale_ticks(metercar, scale, 41, 2, 10, lv_palette_main(LV_PALETTE_GREY));
lv_meter_set_scale_major_ticks(metercar, scale, 10, 4, 15, lv_color_black(), 10);
lv_meter_set_scale_range(metercar, scale, 0, 80, 270, 90);
/*Add a three arc indicator*/
indic1 = lv_meter_add_arc(metercar, scale, 3, lv_palette_main(LV_PALETTE_BLUE), 0);
lv_meter_set_indicator_start_value(metercar, indic1, 0);
lv_meter_set_indicator_end_value(metercar, indic1, 10);
/*Make the tick lines blue at the start of the scale*/
indic1 = lv_meter_add_scale_lines(metercar, scale, lv_palette_main(LV_PALETTE_BLUE), lv_palette_main(LV_PALETTE_BLUE), false, 0);
lv_meter_set_indicator_start_value(metercar, indic1, 0);
lv_meter_set_indicator_end_value(metercar, indic1, 10);
/*Add a red arc to the end*/
indic1 = lv_meter_add_arc(metercar, scale, 10, lv_palette_main(LV_PALETTE_RED), 0);
lv_meter_set_indicator_start_value(metercar, indic1, 60);
lv_meter_set_indicator_end_value(metercar, indic1, 80);
/*Make the tick lines red at the end of the scale*/
indic1 = lv_meter_add_scale_lines(metercar, scale, lv_palette_main(LV_PALETTE_RED), lv_palette_main(LV_PALETTE_RED), false, 0);
lv_meter_set_indicator_start_value(metercar, indic1, 60);
lv_meter_set_indicator_end_value(metercar, indic1, 80);
indic2 = lv_meter_add_arc(metercar, scale, 10, lv_palette_main(LV_PALETTE_YELLOW), 0);
lv_meter_set_indicator_start_value(metercar, indic2, 0);
Screenshot and/or video
Meter at 200px w/h - working
meter at 215px w/h - only start of render menu icon and stop