里飞网

标题: LVGL8下汉字显示错位不全 [打印本页]

作者: 981378640    时间: 2021-10-27 09:47
标题: LVGL8下汉字显示错位不全
本帖最后由 981378640 于 2021-10-27 14:11 编辑

我这边使用的LVGL8+freetype加载ttf字体,实际内容是“软件正在升级,请勿断电断网!”,但显示效果如下图,不是每次都是显示的如下结果,只是偶尔几次出现如下的结果,请求大神指点一下什么原因,附上代码
  1. void lv_gui_upgrade_display(int type)
  2. {
  3.     lv_obj_t *upgrade_bg_container = lv_obj_create(lv_scr_act()); // 基于屏幕创建了一个容器
  4.     if (upgrade_bg_container == NULL)
  5.     {
  6.         printf("[%s:%d] create upgrade_bg_container failed\n", __FUNCTION__, __LINE__);
  7.         return;
  8.     }

  9.     static lv_style_t style;
  10.     lv_style_reset(&style);
  11.     lv_style_init(&style); // 初始化样式
  12.     lv_style_set_radius(&style, 0); // 设置样式的圆角弧度
  13.     lv_style_set_border_width(&style, 0); // 设置边框宽度
  14.     lv_style_set_bg_opa(&style, LV_OPA_COVER); // 设置样式背景的透明度,不透明
  15.     lv_style_set_bg_color(&style, lv_color_hex(0x355EDC)); // 设置样式的背景色
  16.     lv_style_set_pad_all(&style, 0); // 设置样式内部padding填充宽度
  17.     lv_obj_add_style(upgrade_bg_container, &style, 0);  // 给对象添加样式
  18.     lv_obj_set_size(upgrade_bg_container, LV_PCT(100), LV_PCT(100));
  19.     lv_obj_center(upgrade_bg_container); // 对象居屏幕中间显示

  20.     lv_obj_t *text_label = lv_label_create(upgrade_bg_container);
  21.     if (text_label == NULL)
  22.     {
  23.         printf("[%s:%d] create text_label obj failed\n", __FUNCTION__, __LINE__);
  24.         return;
  25.     }

  26.     lv_obj_set_style_text_color(text_label, lv_color_white(), 0);
  27.     lv_obj_set_style_text_font(text_label, (const lv_font_t *)(ft_info_40.font), 0);
  28.     lv_obj_center(text_label);

  29.     switch (type)
  30.     {
  31.     case SOFTWARE_UPGRADE_START:
  32.         lv_label_set_text(text_label, "软件正在升级,请勿断电断网!"); // 设置文本内容
  33.         break;
  34.    
  35.     case SOFTWARE_UPGRADE_START_ENG:
  36.         lv_label_set_text(text_label, "Software is upgrading, do not power off!"); // 设置文本内容
  37.         break;

  38.     case OTA_UPGRADE_START:
  39.         lv_label_set_text(text_label, "系统正在OTA升级,请勿断电断网!"); // 设置文本内容
  40.         break;

  41.     case OTA_UPGRADE_START_ENG:
  42.         lv_label_set_text(text_label, "System is OTA upgrading, do not power off!"); // 设置文本内容
  43.         break;

  44.     default:
  45.         break;
  46.     }
  47. }
复制代码



作者: 981378640    时间: 2021-10-27 09:51
本帖最后由 981378640 于 2021-10-27 14:09 编辑

附上ttf字体文件
作者: 阿里兄    时间: 2021-10-27 10:32
981378640 发表于 2021-10-27 09:51
附上ttf字体文件

这个应该是你哪里没有移植好,换官方字库有没有问题。
作者: 981378640    时间: 2021-10-27 14:12
阿里兄 发表于 2021-10-27 10:32
这个应该是你哪里没有移植好,换官方字库有没有问题。

阿里兄,ttf字体文件附件已上传,麻烦帮我看下
作者: 阿里兄    时间: 2021-10-27 15:00
981378640 发表于 2021-10-27 14:12
阿里兄,ttf字体文件附件已上传,麻烦帮我看下

使用你的TTF文件,生成XBF全字库BIN测试,LVGL8模拟,使用你提供的代码测试。很正常,完全没问题。

注意要删除对象,lv_obj_del(upgrade_bg_container);,不能一直创建不删除啊。

(, 下载次数: 1020)


作者: 981378640    时间: 2021-10-28 15:09
阿里兄 发表于 2021-10-27 15:00
使用你的TTF文件,生成XBF全字库BIN测试,LVGL8模拟,使用你提供的代码测试。很正常,完全没问题。

注意 ...

好的,我试试,多谢阿里兄




欢迎光临 里飞网 (http://dz.lfly.xyz/) Powered by Discuz! X3.3