最简单的例子,用squareline创建一个ARC,main和indicator的style设置中给ARC image设置一张图片,ARC就显示不正确了,而且还会打印GE错误。
8.3.1也没好到哪去,任何控件中如果设置了Transform Scale,大概率显示不出来!
希望能解决,否则有做复杂UI需求的就不要进这个坑了。
离线
1. 采用 squareline 在 V9.1.0上 用arc控件出现的问题,可以把生成的代码发一下吧,我测试一下看看
2. V8.3.1上使用transform的相关操作,需要在lv_conf.h中开启宏定义: #define LV_COLOR_SCREEN_TRANSP 1
3. V8.3.1框架对接硬件加速一些接口不友好,我们重点保证V9的使用体验
离线
// This file was generated by SquareLine Studio
// SquareLine Studio version: SquareLine Studio 1.5.1
// LVGL version: 9.1.0
// Project name: test1
#include "../ui.h"
void ui_Screen1_screen_init(void)
{
ui_Screen1 = lv_obj_create(NULL);
lv_obj_remove_flag(ui_Screen1, LV_OBJ_FLAG_SCROLLABLE); /// Flags
ui_Arc1 = lv_arc_create(ui_Screen1);
lv_obj_set_width(ui_Arc1, 100);
lv_obj_set_height(ui_Arc1, 100);
lv_obj_set_x(ui_Arc1, -116);
lv_obj_set_y(ui_Arc1, -14);
lv_obj_set_align(ui_Arc1, LV_ALIGN_CENTER);
lv_arc_set_value(ui_Arc1, 50);
lv_obj_set_style_arc_image_src(ui_Arc1, &ui_img_trim_background_png, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_arc_image_src(ui_Arc1, &ui_img_trim_forground_png, LV_PART_INDICATOR | LV_STATE_DEFAULT);
}
离线
这段代码在你们的开发板上是显示不出arc的弧线的,只显示一个indicator的小圆点。
离线
1. 通过现象猜测现在应该用的是D13x系列芯片
2. 看代码中图片的加载方式是用的静态数组,有可能是存储在SRAM中的,GE不支持从SRAM中读取数据,可以检查一下配置 ELF mem配置,选择PSRAM,
也可以更新一下给的patch,如果数据在SRAM中,回退为软件处理流程:
修改文件路径:packages/artinchip/lvgl-ui/lvgl_v9/lv_drivers/lv_ge2d/lv_draw_ge2d.c
3. 使用静态数组的图片,当图片比较大的时候,可能会占用比较多的存储空间,使用时候需要注意一下
4. 当图片比较多的时候,推荐用 png/jpg格式图片,放在外部flash中,会动态加载
5. 可以参考luban-lite\packages\artinchip\lvgl-ui\aic_demo\dashboard_demo 中从外部文件系统读取图片的配置方式
6. 也可以用我们的UI设计工具进行UI设计:https://aicdoc.artinchip.com
离线
离线