您现在的位置: 主页 > MCU > 单片机应用 > 为OLED屏增加GUI支持5:图片控件 -
本文所属标签:
为本文创立个标签吧:

为OLED屏增加GUI支持5:图片控件 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-08 

[导读]环境:主机:WIN10开发环境:MDK5.13MCU:STM32F103说明:本文定义了图片控件。OLED屏是单色屏,所以本图片控件支持的是单色BMP图像。将普通图像转换为单色图片可以用工具BmpCvt.exe。将转换后的BMP图像转换为hex文件,可

环境:

本文引用地址: http://www.21ic.com/app/mcu/201807/784088.htm

主机:WIN10

开发环境:MDK5.13

MCU:STM32F103


说明:

本文定义了图片控件。OLED屏是单色屏,所以本图片控件支持的是单色BMP图像。

将普通图像转换为单色图片可以用工具BmpCvt.exe。将转换后的BMP图像转换为hex文件,可以用Bin2C.exe。这两个工具都是emwin自带工具。



源代码:

转换后的hex文件再整理成如下的示例格式:

battery0.c


/**

*Copyright(c),2015-2025

*@filebattery0.c

*@brief电池0格图标

*@authorjdh

*@date2015/11/9

*@verbatim

*说明:

*1.图片格式为bmp

*2.图片大小为17*13

*@endverbatim

*/

/*********************************************************************

*头文件

**********************************************************************/

#include"res.h"

/*********************************************************************

*全局变量

**********************************************************************/

constunsignedcharRes_Battery0_Bmp[114UL+1]={

0x42,0x4D,0x72,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x0D,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0x80,0xFF,0x20,0x00,0x80,0x04,0xE0,0x00,0x80,0x00,0xE0,0x00,

0x80,0x00,0xE0,0x00,0x80,0x00,0xE0,0x00,0x80,0x00,0xE0,0x00,0x80,0x00,0xE0,0x00,0x80,0x00,0x20,0x00,0x80,0x00,0x3F,0xFF,0x80,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

};

/***************************Endoffile****************************/



gui_widget_image.h


/**

*Copyright(c),2015-2025

*@filegui_widget_image.h

*@brief图片控件头文件

*@authorjdh

*@date2015/9/8

*/

#ifndef_GUI_WIDGET_IMAGE_H_

#define_GUI_WIDGET_IMAGE_H_

/*********************************************************************

*头文件

**********************************************************************/

#include"gui_interface.h"

/*********************************************************************

*数据结构

**********************************************************************/

/**

*@brief图片控件数据结构

*/

typedefstruct_Widget_Image

{

//x轴位置

uint16_tx;

//y轴位置

uint16_ty;

//水平尺寸

uint16_txsize;

//垂直尺寸

uint16_tysize;

//图片地址

constuint8_t*addr;

}*Widget_Image_Handle;

/*********************************************************************

*函数

**********************************************************************/

/**

*@brief创建控件text

*@paramx:左上角x坐标

*@paramy:左上角y坐标

*@paramxsize:水平尺寸

*@paramysize:垂直尺寸

*/

Widget_Image_Handlegui_widget_image_create(uint16_tx,uint16_ty,uint16_txsize,uint16_tysize);

/**

*@brief设置图片

*@paramaddr:图片地址

*/

voidgui_widget_image_set_bmp(Widget_Image_Handlehandle,constuint8_t*addr);

#endif



gui_widget_image.c


/**

*Copyright(c),2015-2025

*@filegui_widget_image.c

*@brief图片控件主文件

*@authorjdh

*@date2015/9/8

*/

/*********************************************************************

*头文件

**********************************************************************/

#include"gui_widget_image.h"

#include"gui_2d_lib.h"

#include"stdlib.h"

#include"string.h"

/*********************************************************************

*静态函数

**********************************************************************/

/**

*@brief控件显示

*@paramhandle:控件句柄

*/

staticvoidshow(Widget_Image_Handlehandle);

/*********************************************************************

*函数

**********************************************************************/

/**

*@brief创建控件text

*@paramx:左上角x坐标

*@paramy:左上角y坐标

*@paramxsize:水平尺寸

*@paramysize:垂直尺寸

*/

Widget_Image_Handlegui_widget_image_create(uint16_tx,uint16_ty,uint16_txsize,uint16_tysize)

{

Widget_Image_Handlehandle;

//控件初始化

handle=malloc(sizeof(*handle));

handle->x=x;

handle->y=y;

handle->xsize=xsize;

handle->ysize=ysize;

returnhandle;

}

/**

*@brief设置图片

*@paramaddr:图片地址

*/

voidgui_widget_image_set_bmp(Widget_Image_Handlehandle,constuint8_t*addr)

{

handle->addr=addr;

//显示

show(handle);

}

/**

*@brief控件显示

*@paramhandle:控件句柄

*/

staticvoidshow(Widget_Image_Handlehandle)

{

//清除区域

gui_fill_rect(handle->x,handle->y,handle->x+handle->xsize,handle->y+handle->ysize,0);

//显示

gui_draw_bitmap(handle->x,handle->y,handle->addr);

}



测试代码:


//电池图标

staticWidget_Image_HandleWidget_Image_Battery;

Widget_Image_Battery=gui_widget_image_create(106,0,17,13);

gui_widget_image_set_bmp(Widget_Image_Battery,Res_Battery0_Bmp);






              查看评论 回复



嵌入式交流网主页 > MCU > 单片机应用 > 为OLED屏增加GUI支持5:图片控件 -
 

"为OLED屏增加GUI支持5:图片控件 -"的相关文章

网站地图

围观()