图片取模

图片取模实际上是将图片数据转换为pixmap数据,但是针对不同的控件,其支持的pixmapdata格式不同,因此需要将图片数据转换为对应的pixmapdata数据。

普通控件的pixmap支持

普通控件(按钮,矩形,圆,进度条等)的pixmap仅支持相应颜色为的格式,不支持压缩,也不支持外部Flash,例如,屏幕的颜色是RGB565的,那么取模时选择的颜色格式必须为RGB565,否则会出错,如果屏幕是RGB888的,那么取模时选择的颜色格式必须为RGB888,否则会出错。

ext_img控件的pixmap支持

ext_img控件即扩展图片控件的pixmap支持RGB332, RGB565,RGB888,并且支持RLE压缩格式,同时支持外部Flash。

取模步骤

  1. 点击左侧的导航栏中的【图片取模工具】

  2. 点击【📁 点击或拖拽图片到此处 支持格式:JPG、JPEG、PNG、BMP 已添加 0/1024 张图片】,选择需要转换的图片,可以多个图片一起转换

  3. 选择【颜色格式】,选择你需要的颜色格式

  4. 选择【输出格式】,如果是使用外部Flash,请选择bin格式,否则请选择c格式

  5. 选择【压缩算法】,如果是ext_img,可以支持压缩,如果是普通控件,请选择无压缩

  6. 填写输出的【文件名】,默认是images文件

  7. 点击【开始转换】按钮,即可生成对应的pixmap数据

在SGL中使用生成的pixmap数据

最终生成的数据是一个.c文件,将这个文件复制到你的工程文件中,并且添加到编译中,生成的格式如下:

/* 这里省略大量数组数据 */
...
const sgl_pixmap_t pic1_pixmap = {
    .width = 131,
    .height = 128,
    .bitmap.array = pic1_data,
    .format = SGL_PIXMAP_FMT_RGB565,
};

在你的代码中使用如下代码:

extern const sgl_pixmap_t pic1_pixmap;
sgl_xxx_set_pixmap(xxx_obj, &pic1_pixmap);