嵌入式GUI—Littlevgl

Littlevgl介绍与移植

1、简介

        Littlevgl是一种纯C语言编写的GUI,控件多且美,移植简单,只要对接一个显示接口,需要触摸的再加一个触摸控制接口。

2、移植 

        显示接口移植:

        

        static void tft_flush(int32_t x1, int32_t y1, int32_t x2, int32_t y2, const lv_color_t * color_p)
        {
               /*Truncate the area to the screen*/
              int32_t act_x1 = x1 < 0 ? 0 : x1;
              int32_t act_y1 = y1 < 0 ? 0 : y1;
              int32_t act_x2 = x2 > LV_HOR_RES ? LV_HOR_RES  : x2;
              int32_t act_y2 = y2 > LV_VER_RES ? LV_VER_RES  : y2;

             uint32_t x;
             uint32_t y;

             /*Put the map to the remaining area*/
            for(y = act_y1; y <= act_y2; y++)      //填充屏幕的像素点
            {
               for(x = act_x1; x <= act_x2; x++)
               {
                    GUI_Point(x, y,  color_p->full);
                   color_p++;
               }
            }
             lv_flush_ready();
       }

       注册显示接口:

             lv_disp_drv_t disp;

             lv_disp_drv_init(&disp);
             disp.disp_flush = tft_flush;
             disp.disp_fill = lv_disp_fill;         //单点填充
             disp.disp_map = lv_disp_map;  //与tft_flush同样
             lv_disp_drv_register(&disp);  

      触摸接口:

             static lv_indev_t *indev;
             lv_indev_drv_t indev_drv;
             lv_indev_drv_init(&indev_drv);
             indev_drv.read = my_input_read;                        //触摸屏返回按压状态以及触摸位置
             indev_drv.type = LV_INDEV_TYPE_POINTER;   //有几种类型,这里采用的是触摸屏
             indev = lv_indev_drv_register(&indev_drv);

     以上接口对接好后,基本上就算移植好了。

3、汉字显示

        Littlevgl本身不带有中文字库,需要取模后添加中文字库,这里推荐一个离线取模软件 Lvgl Font Tool V0.3,添加需要显示的汉字,自动生成文件。

       引用:假设用改该软件生成的文件名为myfont.c,使用前需要在lv_font.h文件加上

            LV_FONT_DECLARE(myfont);   //其实就是一个extern声明

       之后就可以调用这个文件字库了。

       调用:

       1、样式调用

           style.text.font = &my_font_name;

       2、字库混合

           lv_font_add(&myfont, &parent_font);

   注意事项:keil中要使用中文,必须修改编码方式为UTF-8.

猜你喜欢

转载自blog.csdn.net/tulongyongshi/article/details/105904363