emWin使用资料收集(二) ----- 使用emWin和BmpCvt工具显示位图

Segger为emWin提供了BMP转换工具,可以直接生成C流文件。先准备一张BMP图片,大小不要超过屏幕的大小,我是在VS里面使用的模拟器,屏幕的大小设置为800*480。

 

打开BmpCvt这个软件,然后

File--Open,打开Bmp文件

Image--Convert to RGB。这里可以根据需要设置成其它

File--Save as--"C" Stream (*.dta),这样就在图片所在的文件夹里生成了相应的dta文件。至于这个C流文件 ,我的理解是软件先帮我们解码好了,当然是按照emWin已经设定好的格式去解码的。这样我们在使用的时候只需要直接读取,然后就可以显示出来了,速度相对来说快一点。

 

 

#include "GUI.h" #include "stdio.h"

void MainTask(void) {  FILE *fp;  GUI_ALLOC_DATATYPE hMem;  char *_acBuffer;  int size;

 GUI_Init();  GUI_SetBkColor(GUI_BLACK);  GUI_Clear();  GUI_SetFont(&GUI_Font24_ASCII);

 /*只读方式打开流文件*/  fp = fopen("./MyTest/temp.dta", "r");  /*检测打开的结果*/  if (NULL == fp) {   GUI_DispString("File open is error!");  } else {   GUI_DispString("File open is ok!\n");   /*移动文件指针到结束*/   fseek( fp, 0L, SEEK_END );   /*获取偏移量即文件的大小*/   size = ftell( fp );   /*重新设置移动位置*/   fseek( fp, 0L, SEEK_SET );   /*申请和文件大小一样的内存*/   hMem = GUI_ALLOC_AllocZero(size);   /*把申请到的内存转换成指针*/   _acBuffer = GUI_ALLOC_h2p(hMem);   /*把文件读取到缓存*/   fread(_acBuffer, size, 1, fp);   /*关闭文件*/   fclose(fp);   /*直接显示出来*/   GUI_DrawStreamedBitmapAuto(_acBuffer, 0, 0);   /*释放申请的内存*/   GUI_ALLOC_Free(hMem);  }

 while (1) {   GUI_Delay(1000);  } }

显示效果如下图:
使用emWin和BmpCvt工具显示位图 - lxy_fight - lxy_fight的博客

转自
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值