屏幕的初始化过程-LVGL

本文详细介绍了LVGL库中屏幕初始化的过程,包括lv_init的屏幕链表初始化,lv_win32_init的显示器注册,lv_disp_drv_register的屏幕创建,以及lv_obj_create在创建屏幕对象中的作用。通过这些步骤,LVGL能够设置屏幕分辨率,创建用户、顶层和系统三层结构,并为屏幕对象设定全屏坐标。
摘要由CSDN通过智能技术生成

屏幕的初始化过程-LVGL

  • 1、lv_init:初始化屏幕链表
_lv_ll_init(&LV_GC_ROOT(_lv_disp_ll), sizeof(lv_disp_t));
  • 2、lv_win32_init:注册显示器到链表
static lv_disp_drv_t display_driver;
lv_disp_drv_init(&display_driver);
display_driver.hor_res = hor_res;
display_driver.ver_res = ver_res;
display_driver.flush_cb = lv_win32_display_driver_flush_callback;
display_driver.draw_buf = &display_buffer;
display_driver.rounder_cb = lv_win32_display_driver_rounder_callback;
g_display = lv_disp_drv_register(&display_driver);
  • 3、lv_disp_drv_register:创建屏幕

    创建具有三层结构的屏幕,分别为用户层、顶层和系统层。根据 lv_obj_create(NULL) 的参数 NULL 可知,屏幕是没有父类的基础对象

disp->act_scr   = lv_obj_create(NULL); /*Create a default screen on the display*/
disp->top_layer = lv_obj_create(NULL); /*Create top layer on the display*/
disp->sys_layer = lv_obj_create(NULL); /*Create sys layer on the display*/
  • 4、lv_obj_create
lv_obj_t * obj = lv_obj_class_create_obj(MY_CLASS, parent);
  • 5、lv_obj_class_create_obj:创建屏幕的形状
/*Create a screen*/
if(parent == NULL) {
    
    ...
        
    /*Set coordinates to full screen size*/
    obj->coords.x1 = 0;
    obj->coords.y1 = 0;
    obj->coords.x2 = lv_disp_get_hor_res(NULL) - 1;
    obj->coords.y2 = lv_disp_get_ver_res(NULL) - 1;
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值