为OLED屏增加GUI支持5:图片控件
来源:互联网 发布:天天pk10计划软件 编辑:程序博客网 时间:2024/05/01 16:48
为OLED屏增加GUI支持5:图片控件
本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明.
环境:
主机:WIN10
开发环境:MDK5.13
MCU:STM32F103
说明:
本文定义了图片控件。OLED屏是单色屏,所以本图片控件支持的是单色BMP图像。
将普通图像转换为单色图片可以用工具BmpCvt.exe。将转换后的BMP图像转换为hex文件,可以用Bin2C.exe。这两个工具都是emwin自带工具。
源代码:
转换后的hex文件再整理成如下的示例格式:
battery0.c
/*** Copyright (c), 2015-2025* @file battery0.c* @brief 电池0格图标* @author jdh* @date 2015/11/9* @verbatim * 说明:* 1.图片格式为bmp* 2.图片大小为17*13* @endverbatim *//**********************************************************************头文件**********************************************************************/#include "res.h"/**********************************************************************全局变量**********************************************************************/const unsigned char Res_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};/*************************** End of file ****************************/
gui_widget_image.h
/*** Copyright (c), 2015-2025* @file gui_widget_image.h* @brief 图片控件头文件* @author jdh* @date 2015/9/8*/#ifndef _GUI_WIDGET_IMAGE_H_#define _GUI_WIDGET_IMAGE_H_/**********************************************************************头文件**********************************************************************/#include "gui_interface.h"/**********************************************************************数据结构**********************************************************************//*** @brief 图片控件数据结构*/typedef struct _Widget_Image{//x轴位置uint16_t x;//y轴位置uint16_t y;//水平尺寸uint16_t xsize;//垂直尺寸uint16_t ysize;//图片地址const uint8_t *addr;}*Widget_Image_Handle;/**********************************************************************函数**********************************************************************//*** @brief 创建控件text* @param x:左上角x坐标* @param y:左上角y坐标* @param xsize:水平尺寸* @param ysize:垂直尺寸*/Widget_Image_Handle gui_widget_image_create(uint16_t x,uint16_t y,uint16_t xsize,uint16_t ysize);/*** @brief 设置图片* @param addr:图片地址*/void gui_widget_image_set_bmp(Widget_Image_Handle handle,const uint8_t *addr);#endif
gui_widget_image.c
/*** Copyright (c), 2015-2025* @file gui_widget_image.c* @brief 图片控件主文件* @author jdh* @date 2015/9/8*//**********************************************************************头文件**********************************************************************/#include "gui_widget_image.h"#include "gui_2d_lib.h"#include "stdlib.h"#include "string.h"/**********************************************************************静态函数**********************************************************************//*** @brief 控件显示* @param handle:控件句柄*/static void show(Widget_Image_Handle handle);/**********************************************************************函数**********************************************************************//*** @brief 创建控件text* @param x:左上角x坐标* @param y:左上角y坐标* @param xsize:水平尺寸* @param ysize:垂直尺寸*/Widget_Image_Handle gui_widget_image_create(uint16_t x,uint16_t y,uint16_t xsize,uint16_t ysize){Widget_Image_Handle handle;//控件初始化handle = malloc(sizeof(*handle));handle->x = x;handle->y = y;handle->xsize = xsize;handle->ysize = ysize;return handle;}/*** @brief 设置图片* @param addr:图片地址*/void gui_widget_image_set_bmp(Widget_Image_Handle handle,const uint8_t *addr){handle->addr = addr;//显示show(handle);}/*** @brief 控件显示* @param handle:控件句柄*/static void show(Widget_Image_Handle handle){//清除区域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);}
测试代码:
//电池图标static Widget_Image_Handle Widget_Image_Battery;Widget_Image_Battery = gui_widget_image_create(106,0,17,13);gui_widget_image_set_bmp(Widget_Image_Battery,Res_Battery0_Bmp);
1 0
- 为OLED屏增加GUI支持5:图片控件
- 为OLED屏增加GUI支持4:文本框控件
- 为OLED屏增加GUI支持6:进度条控件
- 为OLED屏增加GUI支持6:进度条控件
- 为OLED屏增加GUI支持1:OLED驱动
- 为OLED屏增加GUI支持3:字库
- 为OLED屏增加GUI支持7:综合实例
- 为OLED屏增加GUI支持2:2D图形库
- OLED GUI
- eCGUI-增加JPEG图像支持!(嵌入式GUI)
- 为Empathy增加QQ支持
- 为Empathy增加QQ支持
- 为SimpleCursorAdapter增加CheckBox支持
- 为项目增加ibatis支持
- 为项目增加log4j支持
- 【Arduino】【MATLAB】用ssd1306 oled屏显示任意图片
- 剪切图片和为图片增加文字
- 为JDBC增加命名参数的支持
- IOS学习笔记之字符串类
- 人脸对齐(二):Active Shape Models ---Their Training and Application
- JAVA加载外部资源库
- String 判断纯数字 正则式
- 微信支付登录总结
- 为OLED屏增加GUI支持5:图片控件
- jboss7 datasource 当数据库重启自动重新获取连接
- iOS面试3
- Play framework 重定向
- Spring学习详解(1)——Spring入门详解
- python Item_CF
- bootstrap导入JavaScript插件
- 黑马程序员--OC自学笔记---05点语法、@property、@synthesize、动态类型、id类型、响应方法、构造方法
- 2015私人阅读十五佳