美观!!大气!!! LVGL『Color picker颜色选择器控件』介绍

本文详细介绍了LVGL图形库中的颜色选择器控件,包括其概念、类型、颜色设置、颜色模式、旋钮颜色以及事件处理。通过示例代码展示了如何创建不同类型的颜色选择器,设置颜色,以及监听颜色变化事件。LVGL的颜色选择器控件提供了丰富的交互功能,适合作为GUI设计中的色彩选择工具。
摘要由CSDN通过智能技术生成

一. LVGL GUI颜色选择器控件的概念

顾名思义,拾色器允许选择颜色。可以依次选择颜色的色相,饱和度和值。小部件具有两种形式:圆形(圆盘)和矩形。在这两种形式中,长按对象,颜色选择器将更改为颜色的下一个参数(色相,饱和度或值)。此外,双击将重置当前参数。

二. LVGL GUI颜色选择器小部件和样式

拾色器的主要部分称为 LV_CPICKER_PART_BG 。以圆形形式,它使用 scale_width 设置圆的宽度,并使用 pad_inner 在圆和内部预览圆之间填充。在矩形模式下,半径可以用于在矩形上应用半径。
该对象具有称为的虚拟部分 LV_CPICKER_PART_KNOB ,它是在当前值上绘制的矩形(或圆形)。它使用所有矩形(如样式属性和填充)使其大于圆形或矩形背景的宽度。

三. LVGL GUI颜色选择器控件的使用

1. 类型(Type)

可以通过以下方式更改颜色选择器的类型  lv_cpicker_set_type(cpicker, LV_CPICKER_TYPE_RECT/DISC),我们来创建三个颜色选择器,一个是默认的,一个设置为LV_CPICKER_TYPE_RECT,一个设置为LV_CPICKER_TYPE_DISC,代码如下:

void lvgl_cpicker_type_test(void)
{

    lv_obj_t* cpicker1 = lv_cpicker_create(lv_scr_act(), NULL);
    lv_obj_set_size(cpicker1, 200, 200);
    lv_obj_set_pos(cpicker1, 100, 100);

    lv_obj_t* cpicker2 = lv_cpicker_create(lv_scr_act(), NULL);
    lv_obj_set_size(cpicker2, 200, 200);
    lv_obj_set_pos(cpicker2, 400, 100);
    lv_cpicker_set_type(cpicker2, LV_CPICKER_TYPE_RECT);

    lv_obj_t* cpicker3 = lv_cpicker_create(lv_scr_act(), NULL);
    lv_obj_set_size(cpicker3, 200, 200);
    lv_obj_set_pos(cpicker3, 700, 100);
    lv_cpicker_set_type(cpicker3, LV_CPICKER_TYPE_DISC);

}

2. 设定颜色(Set color)

我们只说一个函数lv_cpicker_set_color,直接看代码跟效果

void lvgl_cpicker_set_color_test(void)
{
    lv_obj_t* cpicker1 = lv_cpicker_create(lv_scr_act(), NULL);
    lv_obj_set_size(cpicker1, 200, 200);
    lv_obj_set_pos(cpicker1, 100, 100);

    lv_obj_t* cpicker2 = lv_cpicker_create(lv_scr_act(), NULL);
    lv_obj_set_size(cpicker2, 200, 200);
    lv_obj_set_pos(cpicker2, 400, 100);
    lv_cpicker_set_color(cpicker2,LV_COLOR_BLUE);

    lv_obj_t* cpicker3 = lv_cpicker_create(lv_scr_act(), NULL);
    lv_obj_set_size(cpicker3, 200, 200);
    lv_obj_set_pos(cpicker3, 700, 100);
    lv_cpicker_set_color(cpicker3, LV_COLOR_BLACK);

}

3. 颜色模式(Color mode)

不做说明了

4. 旋钮颜色(Knob color)

选择什么背景就变成什么颜色,直接上代码上图

void lvgl_cpicker_knob_test(void)
{
    lv_obj_t* cpicker1 = lv_cpicker_create(lv_scr_act(), NULL);
    lv_obj_set_size(cpicker1, 200, 200);
    lv_obj_set_pos(cpicker1, 100, 100);
    lv_cpicker_set_knob_colored(cpicker1, true);
}

5. 事件(Event)

虽然官网说没有特殊事件产生,但是我们仔细想下,如果没有特殊事件,只有点急等,那么岂不是这个控件很鸡肋,奔着彻底研究的想法,自己试了下LV_EVENT_VALUE_CHANGED,果然有产生 这个事件,所以这么来看LVGL官网还有很大的改善空间,不过这个我们也理解,毕竟刚兴起的GUI!总有一个过程,我们直接上代码以及效果吧


static void cpicker_event_handler(lv_obj_t* obj, lv_event_t event)
{
    if (event == LV_EVENT_VALUE_CHANGED) {
        lv_color_t current_color = lv_cpicker_get_color(obj);
        printf("LV_EVENT_VALUE_CHANGED R(%d):G(%d):B(%d)\n", current_color.ch.red, current_color.ch.green, current_color.ch.blue);
    }
}
void lvgl_cpicker_event_test(void)
{
    lv_obj_t* cpicker1 = lv_cpicker_create(lv_scr_act(), NULL);
    lv_obj_set_size(cpicker1, 200, 200);
    lv_obj_set_pos(cpicker1, 100, 100);
    lv_cpicker_set_knob_colored(cpicker1, true);
    lv_obj_set_event_cb(cpicker1, cpicker_event_handler);
}

效果图:

好了,完结了,更多精彩继续戳↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wireless_Link

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值