下面是在模拟器上实际运行的例子(显示的图标使用的是第12章12.2小节里面的两个流位图),可以在模拟器上面运行的完整例子代码在V6-514_STemWin实验_存储设备之基础函数(模拟器)里面。
复制代码
#include "GUI.h"
#include "stdio.h"
#ifndef GUI_CONST_STORAGE
#define GUI_CONST_STORAGE const
#endif
extern GUI_CONST_STORAGE GUI_BITMAP bmpic;
static GUI_CONST_STORAGE unsigned short _acpic[] = {
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDE, 0xFFBE, 0xFFBE, 0xFFBE,
0xFFBE, 0xFFBE, 0xFFBE, 0xFFDE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFBD, 0xF75B, 0xF6F9, 0xF697, 0xEE34, 0xEE13, 0xEDD1, 0xEDD1, 0xEDD1,
0xEDD1, 0xEDD1, 0xEDD1, 0xEE13, 0xEE55, 0xF6B7, 0xF71A, 0xF75C, 0xFFBE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
/* 后面的数据未列出 */
};
GUI_CONST_STORAGE GUI_BITMAP bmpic = {
64, // xSize
64, // ySize
128, // BytesPerLine
16, // BitsPerPixel
(unsigned char *)_acpic, // Pointer to picture data
NULL, // Pointer to palette
GUI_DRAW_BMP565
};
static GUI_CONST_STORAGE unsigned long _acpic1[] = {
0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000,
0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000,
0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000,
/* 后面的数据未列出 */
};
GUI_CONST_STORAGE GUI_BITMAP bmpic1 = {
64, // xSize
64, // ySize
256, // BytesPerLine
32, // BitsPerPixel
(unsigned char *)_acpic1, // Pointer to picture data
NULL, // Pointer to palette
GUI_DRAW_BMP8888
}
/*********************************************************************
*
* MainTask
*/
void MainTask(void) {
GUI_MEMDEV_Handle hMem0;
GUI_MEMDEV_Handle hMem1;
GUI_MEMDEV_Handle hMem2;
GUI_MEMDEV_Handle hMem3;
/* emWin初始化 */
GUI_Init();
/* 设置字体 */
GUI_SetFont(&GUI_Font16B_ASCII);
//////////////////////////方式一/////////////////////////////////////
/* 创建内存设备,并将RGB565格式的位图绘制到内存设备上 */
hMem0 = GUI_MEMDEV_CreateEx(0, 0, 64, 64, GUI_MEMDEV_HASTRANS);
GUI_MEMDEV_Select(hMem0);
GUI_DrawBitmap(&bmpic, 0, 0);
GUI_MEMDEV_Select(0);
/* 显示RGB565格式的位图 */
GUI_DispStringAt("This is RGB565 bitmap & GUI_MEMDEV_CreateEx", 100, 50);
GUI_MEMDEV_WriteAt(hMem0, 20, 20);
////////////////////////////方式二///////////////////////////////////
/* 创建内存设备,并将RGB565格式的位图绘制到内存设备上 */
hMem1 = GUI_MEMDEV_CreateFixed(0, 0, 64, 64, GUI_MEMDEV_HASTRANS,
GUI_MEMDEV_APILIST_16,
GUI_COLOR_CONV_565);
GUI_MEMDEV_Select(hMem1);
GUI_DrawBitmap(&bmpic, 0, 0);
GUI_MEMDEV_Select(0);
/* 显示RGB565格式的位图 */
GUI_DispStringAt("This is RGB565 bitmap & GUI_MEMDEV_CreateFixed", 100, 150);
GUI_MEMDEV_WriteAt(hMem1, 20, 120);
//////////////////////////////方式三/////////////////////////////////
/* 创建内存设备,并将ARGB8888格式的位图绘制到内存设备上 */
hMem2 = GUI_MEMDEV_CreateEx(0, 0, 64, 64, GUI_MEMDEV_HASTRANS);
GUI_MEMDEV_Select(hMem2);
GUI_DrawBitmap(&bmpic1, 0, 0);
GUI_MEMDEV_Select(0);
/* 显示ARGB8888格式的位图 */
GUI_DispStringAt("This is ARGB8888 bitmap & GUI_MEMDEV_CreateEx", 100, 250);
GUI_MEMDEV_WriteAt(hMem2, 20, 220);
////////////////////////////////方式四///////////////////////////////
/* 创建内存设备,并将ARGB8888格式的位图绘制到内存设备上 */
hMem3 = GUI_MEMDEV_CreateFixed(0, 0, 64, 64, GUI_MEMDEV_HASTRANS,
GUI_MEMDEV_APILIST_32,
GUI_COLOR_CONV_8888);
GUI_MEMDEV_Select(hMem3);
GUI_DrawBitmap(&bmpic1, 0, 0);
GUI_MEMDEV_Select(0);
/* 显示ARGB8888格式的位图 */
GUI_DispStringAt("This is ARGB8888 bitmap & GUI_MEMDEV_CreateFixed", 100, 350);
GUI_MEMDEV_WriteAt(hMem3, 20, 320);
while (1)
{
GUI_Delay(10);
}
} |