嵌入式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.

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值