• LVGL_基础控件label


    LVGL_基础控件label

    1、创建一个基础对象
    /* 创建一个基础对象 label */
    lv_obj_t * label = lv_label_create(lv_scr_act());   // 创建一个label部件(对象),他的父对象是活动屏幕对象
    
    • 1
    • 2
    2、设置显示内容
    char * text = "www.100ask.net";   // 要显示的文字
    /* 展示文字 */
    /* 设置要显示的文本,函数中会另外开辟和给定的字符串大小的空间存放字符串(常用) */
    lv_label_set_text(label, text);
    lv_label_set_text(label, "www.100ask.net"); // 也可以这样使用
    /* 设置要显示的文字,也会另外开辟空间存放字符串,但是可以像 printf 格式化字符串 */
    lv_label_set_text_fmt(label, "%s: %d", "Value", 15);
    /* 设置要显示的文字,直接使用给定的缓冲区(不常用) */
    lv_label_set_text_static(label, text);
    lv_label_set_text_static(label, "www.100ask.net"); // 也可以这样使用
    /*换行用法*/
    lv_label_set_text_static(label, "label1\nlabel2\n");
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    3、控件的设置

    在这里插入图片描述
    lv_label_set_long_mode(label,LV_LABEL_LONG_WRAP);//默认
    说明:会自动根据显示内容调整label控件的大小
    在这里插入图片描述
    lv_label_set_long_mode(label,LV_LABEL_LONG_DOT);//显示不全的显示三个点的省略号
    在这里插入图片描述
    lv_label_set_long_mode(label,LV_LABEL_LONG_CLIP);//多余的超出label部分就直接不显示
    注意:在使用这种模式的时候不能使用lv_label_set_text_static(label, “www.100ask.net”);来设定显示内容了,因为用这种方式显示的文字内容是存放在只读存储区域的无法对字符串进行修改。
    在这里插入图片描述

    /*设置label控件的大小*/
    lv_obj_set_width(label,50);
    lv_obj_set_height(label,50);
    /*设置显示位置*/
    lv_obj_center(label);
    lv_label_set_long_mode(label,LV_LABEL_LONG_WRAP);//默认
    /*文学跑马灯显示*/
    lv_label_set_long_mode(label,LV_LABEL_LONG_SCROLL_CIRCULAR);//向一个方向滚动
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    4、设置文字大小,字号
    /* 设置文字字号(内置ASCII字库) */
    /* 使用其他字号的字体,如果不设置默认使用 lv_font_montserrat_14 ,在 lv_conf.h 中 LV_FONT_DEFAULT 定义 */
    lv_obj_set_style_text_font(label, &lv_font_montserrat_28, 0);  // 为了方便,这里使用本地(私有)样式
    
    • 1
    • 2
    • 3
    5、设置文字背景颜色
    lv_obj_set_style_bg_color(label,lv_color_hex(0xf7b37b),0);//注意:需要设置透明度,默认是100%,所以直接修改颜色不生效
    lv_obj_set_style_bg_opa(label,80,0);
    
    • 1
    • 2
    6、设置文字颜色
    lv_obj_set_style_text_color(label,lv_color_hex(0xf7b37b),0);
    
    • 1
    7、设置文字显示不同的颜色

    在这里插入图片描述

    lv_label_set_recolor(label, true);
    lv_label_set_text(label, "#0000ff Re-color# #ff00ff words# #ff0000 of a# label");
    
    • 1
    • 2
    8、模拟PC选中文本

    在这里插入图片描述

    /*选中1~6位置的字符*/
    lv_label_set_text_sel_start(label, 1);
    lv_label_set_text_sel_end(label, 6);
    
    • 1
    • 2
    • 3
    9、利用label控件显示小图标

    在这里插入图片描述
    在这里插入图片描述

    lv_label_set_text(label, LV_SYMBOL_OK);	            // 直接显示图标
    
    • 1

    在这里插入图片描述

    lv_label_set_text(label, LV_SYMBOL_OK "Apply");	// 图标与字符串一起使用
    
    • 1

    在这里插入图片描述

    lv_label_set_text(label, LV_SYMBOL_OK LV_SYMBOL_WIFI LV_SYMBOL_PLAY);// 多个图标一起使用
    
    • 1
    10、事件处理
    /* 让 label 可以响应输入事件 */
    lv_obj_add_flag(label, LV_OBJ_FLAG_CLICKABLE);//默认label控件是没有事件的,必须要运行这一句才有用
    lv_obj_add_event_cb(label, label_event_cb, LV_EVENT_ALL, 0);
    
    static void label_event_cb(lv_event_t * e)
    {
        lv_obj_t * obj = lv_event_get_target(e);        // 获取触发事件的部件(对象)
        lv_event_code_t code = lv_event_get_code(e);    // 获取当前部件(对象)触发的事件代码
    
        switch(code){
            case LV_EVENT_PRESSED:
                printf("LV_EVENT_PRESSED\n");
                break;
            case LV_EVENT_LONG_PRESSED:
                printf("LV_EVENT_LONG_PRESSED\n");
                break;
            default:
                //printf("NONE\n");
                break;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    11、显示汉字

    本身LVGL就自带一个常用汉字库,大约有1000个常用汉字,可以作为简单的只用,首先打开这个宏定义,然后就直接可以只用啦
    在这里插入图片描述
    在这里插入图片描述

    //可以看到问和网就没有显示出来,是因为自带的字库中没有这两个字
    /* 创建一个基础对象 label */
    lv_obj_t * label = lv_label_create(lv_scr_act());                           // 创建一个label部件(对象),他的父对象是活动屏幕对象
    //lv_obj_set_style_text_font(label, &lv_font_montserrat_30, 0); 
    lv_obj_set_style_text_font(label, &lv_font_simsun_16_cjk, 0);               // 使用内置的 cjk 字库
    
    lv_label_set_text(label, "百问网嵌入式abcd123.,<>';'[]ABCD");             // 显示文字(注意当前文件文本的编码格式,要使用 utf-8 编码)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    12、使用自定义字库

    在这里插入图片描述

    http://lvgl.100ask.net/8.1/tools/fonts-zh-source.html
    https://lvgl.io/tools/fontconverter

    在这里插入图片描述
    在这里插入图片描述
    把自己建立的字体加入工程中
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    /* 创建一个基础对象 label */
    lv_obj_t * label = lv_label_create(lv_scr_act());       	// 创建一个label部件(对象),他的父对象是活动屏幕对象
    LV_FONT_DECLARE(lv_font_test);                         		// 声明外部字库
    lv_obj_set_style_text_font(label, &lv_font_test, 0);
    lv_label_set_text(label, "百问网嵌入式abcd123.,<>';'[]ABCD");// 显示文字(注意当前文件文本的编码格式,要使用 utf-8 编码)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

  • 相关阅读:
    研究人员在宜家智能照明系统发现漏洞,攻击者可以利用这些漏洞导致灯泡闪烁恢复出厂设置
    [LeetCode周赛复盘] 第 320 场周赛20221120
    下载安全证书到jdk中的cacerts证书库
    优先级队列(堆)
    OneDrive下的OneNote扩容方法,及查看OneDrive容量的方法(详细图文教程)
    知识点 | Revit族库插件哪家强?
    【JAVA】MyBatis-Plus插入/更新数据时如何自动更新字段时间
    GAN 的理想损失值应该是多少?(Make Your First GAN With PyTorch 附录 A)
    编译原理复习笔记
    算法通关村-----寻找祖先问题
  • 原文地址:https://blog.csdn.net/weixin_50183638/article/details/133387445