Slider 控件旋钮上显示数字

    
static void button_event_cb(lv_event_t* e) {
    lv_event_code_t code = lv_event_get_code(e);
    lv_obj_t*       obj  = lv_event_get_target(e);

    if (code == LV_EVENT_DRAW_PART_END) {
        lv_obj_draw_part_dsc_t* dsc = lv_event_get_param(e);
        if (dsc->part == LV_PART_KNOB) {
            char buf[16];
            lv_snprintf(buf, sizeof(buf), "%d", (int)lv_slider_get_value(obj));

            lv_point_t label_size;
            lv_txt_get_size(&label_size, buf, LV_FONT_DEFAULT, 0, 0, LV_COORD_MAX, 0);
            lv_area_t label_area;
            label_area.x1 = dsc->draw_area->x1 + (dsc->draw_area->x2 - dsc->draw_area->x1) / 2 - 5;
            label_area.x2 = dsc->draw_area->x2;
            label_area.y2 = dsc->draw_area->y2;
            label_area.y1 = dsc->draw_area->y1 + (dsc->draw_area->y2 - dsc->draw_area->y1) / 2 - 5;

            lv_draw_label_dsc_t label_draw_dsc;
            lv_draw_label_dsc_init(&label_draw_dsc);

            lv_draw_label(dsc->draw_ctx, &label_draw_dsc, &label_area, buf, NULL);
        }
    }
}

    lv_obj_t* bar = lv_slider_create(lv_scr_act());
    lv_obj_set_size(bar, 200, 20);
    lv_bar_set_value(bar, 15, LV_ANIM_OFF);
    lv_bar_set_range(bar, 0, 100);
    lv_obj_add_event_cb(bar, button_event_cb, LV_EVENT_ALL, NULL);
    lv_obj_center(bar);
    lv_obj_add_flag(bar, LV_OBJ_FLAG_ADV_HITTEST);

主要知识:

  • LV_EVENT_VALUE_CHANGED 滑动条的值被改变时发送事件。 拖动滑动条时会持续发送事件,最后释放时也会发送一次。 使用 lv_slider_is_dragged 来确定滑动条是处于被拖动状态还是被释放状态。

  • LV_EVENT_DRAW_PART_BEGIN 和 LV_EVENT_DRAW_PART_END 被发送用于以下部分。

    • LV_SLIDER_DRAW_PART_KNOB 滑动条的主(右)旋钮

      • 部分LV_PART_KNOB

      • draw_area:指示器的区域

      • rect_dsc

      • id:0

    • LV_SLIDER_DRAW_PART_KNOB滑块的左侧旋钮

      • 部分LV_PART_KNOB

      • draw_area:指标的区域

      • rect_dsc

      • id:1

enum lv_slider_draw_part_type_t

type field in lv_obj_draw_part_dsc_t if class_p = lv_slider_class Used in LV_EVENT_DRAW_PART_BEGIN and LV_EVENT_DRAW_PART_END

Values:

enumerator LV_SLIDER_DRAW_PART_KNOB        滑块的右侧旋钮

enumerator LV_SLIDER_DRAW_PART_KNOB_LEFT      滑块的左侧旋钮

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值