1. Framebuffer 画bmp, jpg, png图。不论bmp,jpg,png文件,都把图片的Raw Data抓出来放入image_buf中,再写入fb_buf
bpp = 3; // 2-16, 3-24, 4-32
char *dst = (char *)fb_buf + dst_y * fix.line_lenght * bpp + dst_x * bpp;
char *src = (char *)image_buf + src_y * image_w * bpp + src_x * bpp;
for ( int i = 0; i < image_h; i++)
{
#if 0
for ( int j = 0; j < image_w; j++)
{
*(dst + j * bpp) = *(src+ j * bpp);
*(dst + j * bpp + 1) = *(src + j * bpp + 1);
*(dst + j * bpp + 2) = *(src + j * bpp + 2);
}
#endif
memcpy(dst, src, image_w * bpp);
dst = dst + fix.line_lenght * bpp;
src = src + image_w * bpp;
}
2. Framebuffer 画Font。利用开源Freetype工程,将Font的Glyph读出并写入fb_buf即可。
3. Embedded GUI实现方式。
1)自己画FB并管理层次界面和响应。
2)利用MiniGUI, Tiny-x等开源软件。
3)EW商业UI软件
运行效果图