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

来源:互联网 发布:淘宝网体验中心在哪里 编辑:程序博客网 时间:2024/05/16 17:07

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的博客
转自
阅读全文
0 0
原创粉丝点击