- 下载安装VS2019,下载种子链接如下
链接:https://pan.baidu.com/s/1sdbCoQqsPKs6uw_Qe0t52A 提取码:jzdk
- 下载little VGL相关文件,链接如下
链接:https://pan.baidu.com/s/1KDx2Lr5rJK7K1e2B73YU4A 提取码:ns2p
- 解压littlevgl.7z文件,并分别解压以下4个文件
- 用VS2019打开lv_sim_visual_studio_sdl.sln解决方案
- 点击确定,升级到最新版本
- 点击本地Windows调试器,会弹出一个错误窗口
- 出现错误的原因是,lv_drives,lv_examples,lvgl三个文件夹里是空文件夹
- 解决编译问题,分别将以下文件夹里的内容
- 分别复制到以下对应的文件夹中
- 分别将lv_drives,lv_examples,lvgl中的内容全部加到工程中
- 重新点击本地Windows调试器,编译通过,并运行成功
- 实例中主函数中调用了demo_create();
int main(int argc, char** argv)
{
/*Initialize LittlevGL*/
lv_init();
/*Initialize the HAL for LittlevGL*/
hal_init();
/*
* Demo, benchmark, tests and tutorial.
*
* Uncomment any one (and only one) of the functions below to run that
* particular demo, test or tutorial.
*/
demo_create();
//benchmark_create();
//lv_test_theme_1(lv_theme_night_init(210, NULL));
//lv_test_theme_1(lv_theme_night_init(100, NULL));
//lv_test_theme_1(lv_theme_material_init(210, NULL));
//lv_test_theme_1(lv_theme_alien_init(210, NULL));
//lv_test_theme_1(lv_theme_zen_init(210, NULL));
//lv_test_theme_1(lv_theme_nemo_init(210, NULL));
//lv_test_theme_1(lv_theme_mono_init(210, NULL));
//lv_test_theme_1(lv_theme_default_init(210, NULL));
//lv_tutorial_keyboard(kb_indev);
while (1) {
/* Periodically call the lv_task handler.
* It could be done in a timer interrupt or an OS task too.*/
lv_task_handler();
Sleep(10); /*Just to let the system breathe */
}
return 0;
}
- demo_create()的实现
/**
* Create a demo application
*/
void demo_create(void)
{
lv_coord_t hres = lv_disp_get_hor_res(NULL);
lv_coord_t vres = lv_disp_get_ver_res(NULL);
#if LV_DEMO_WALLPAPER
lv_obj_t * wp = lv_img_create(lv_disp_get_scr_act(NULL), NULL);
lv_img_set_src(wp, &img_bubble_pattern);
lv_obj_set_width(wp, hres * 4);
lv_obj_set_protect(wp, LV_PROTECT_POS);
#endif
static lv_style_t style_tv_btn_bg;
lv_style_copy(&style_tv_btn_bg, &lv_style_plain);
style_tv_btn_bg.body.main_color = lv_color_hex(0x487fb7);
style_tv_btn_bg.body.grad_color = lv_color_hex(0x487fb7);
style_tv_btn_bg.body.padding.top = 0;
style_tv_btn_bg.body.padding.bottom = 0;
static lv_style_t style_tv_btn_rel;
lv_style_copy(&style_tv_btn_rel, &lv_style_btn_rel);
style_tv_btn_rel.body.opa = LV_OPA_TRANSP;
style_tv_btn_rel.body.border.width = 0;
static lv_style_t style_tv_btn_pr;
lv_style_copy(&style_tv_btn_pr, &lv_style_btn_pr);
style_tv_btn_pr.body.radius = 0;
style_tv_btn_pr.body.opa = LV_OPA_50;
style_tv_btn_pr.body.main_color = LV_COLOR_WHITE;
style_tv_btn_pr.body.grad_color = LV_COLOR_WHITE;
style_tv_btn_pr.body.border.width = 0;
style_tv_btn_pr.text.color = LV_COLOR_GRAY;
lv_obj_t * tv = lv_tabview_create(lv_disp_get_scr_act(NULL), NULL);
lv_obj_set_size(tv, hres, vres);
#if LV_DEMO_WALLPAPER
lv_obj_set_parent(wp, ((lv_tabview_ext_t *) tv->ext_attr)->content);
lv_obj_set_pos(wp, 0, -5);
#endif
lv_obj_t * tab1 = lv_tabview_add_tab(tv, "Write");
lv_obj_t * tab2 = lv_tabview_add_tab(tv, "List");
lv_obj_t * tab3 = lv_tabview_add_tab(tv, "Chart");
#if LV_DEMO_WALLPAPER == 0
/*Blue bg instead of wallpaper*/
lv_tabview_set_style(tv, LV_TABVIEW_STYLE_BG, &style_tv_btn_bg);
#endif
lv_tabview_set_style(tv, LV_TABVIEW_STYLE_BTN_BG, &style_tv_btn_bg);
lv_tabview_set_style(tv, LV_TABVIEW_STYLE_INDIC, &lv_style_plain);
lv_tabview_set_style(tv, LV_TABVIEW_STYLE_BTN_REL, &style_tv_btn_rel);
lv_tabview_set_style(tv, LV_TABVIEW_STYLE_BTN_PR, &style_tv_btn_pr);
lv_tabview_set_style(tv, LV_TABVIEW_STYLE_BTN_TGL_REL, &style_tv_btn_rel);
lv_tabview_set_style(tv, LV_TABVIEW_STYLE_BTN_TGL_PR, &style_tv_btn_pr);
write_create(tab1);
list_create(tab2);
chart_create(tab3);
#if LV_DEMO_SLIDE_SHOW
lv_task_create(tab_switcher, 3000, LV_TASK_PRIO_MID, tv);
#endif
}
具体代码分析,请参考官网little vgl使用说明