環(huán)境:
主機:WIN10
開發(fā)環(huán)境:MDK5.13
MCU:STM32F103
說明:
gui庫的基礎(chǔ)是一個2D圖形庫,為控件提供繪圖功能
此圖形庫還包括單色BMP圖像顯示函數(shù),為圖片控件提供支持
源代碼:
接口函數(shù):
gui_interface.h
/**
*Copyright(c),2015-2025
*@filegui_interface.h
*@briefgui接口頭文件
*@authorjdh
*@date2015/9/6
*@update2015/9/7
*/
#ifndef_GUI_INTERFACE_H_
#define_GUI_INTERFACE_H_
/*********************************************************************
*頭文件
**********************************************************************/
#include"inf_lcd.h"
/*********************************************************************
*宏定義
**********************************************************************/
/**
*@brief屏幕尺寸
*/
#defineLCD_WIDTH128
#defineLCD_HEIGHT64
/*********************************************************************
*函數(shù)
**********************************************************************/
/**
*@brief畫點
*@paramx:x坐標(biāo)
*@paramy:y坐標(biāo)
*@paramshow:0:不顯示,1:顯示
*/
voidgui_interface_draw_pixel(uint8_tx,uint8_ty,uint8_tshow);
#endif
gui_interface.c
/**
*Copyright(c),2015-2025
*@filegui_interface.c
*@briefgui接口主文件
*@authorjdh
*@date2015/9/6
*/
/*********************************************************************
*頭文件
**********************************************************************/
#include"gui_interface.h"
/*********************************************************************
*函數(shù)
**********************************************************************/
/**
*@brief畫點
*@paramx:x坐標(biāo)
*@paramy:y坐標(biāo)
*@paramshow:0:不顯示,1:顯示
*/
voidgui_interface_draw_pixel(uint8_tx,uint8_ty,uint8_tshow)
{
if(x>=LCD_WIDTH||y>=LCD_HEIGHT)
{
return;
}
inf_lcd_draw_pixel(x,y,show);
}
2D圖形庫:
gui_2d_lib.h
/**
*Copyright(c),2015-2025
*@filegui_2d_lib.c
*@brief2d圖形庫主文件
*@authorjdh
*@date2015/9/6
*@update2015/9/7
*@update2015/11/22
*/
#ifndef_GUI_2D_LIB_H_
#define_GUI_2D_LIB_H_
/*********************************************************************
*頭文件
**********************************************************************/
#include"gui_interface.h"
/*********************************************************************
*函數(shù)
**********************************************************************/
/**
*@brief繪制水平線條
*@paramy:y位置
*@paramx0:x起始位置
*@paramx1:x結(jié)束位置
*/
voidgui_draw_hline(uint16_ty,uint16_tx0,uint16_tx1);
/**
*@brief繪制垂直線條
*@paramx:x位置
*@paramy0:y起始位置
*@paramy1:y結(jié)束位置
*/
voidgui_draw_vline(uint16_tx,uint16_ty0,uint16_ty1);
/**
*@brief繪制線條
*@paramx0:x起始位置
*@paramy0:y起始位置
*@paramx1:x結(jié)束位置
*@paramy2:y結(jié)束位置
*/
voidgui_draw_line(uint16_tx0,uint16_ty0,uint16_tx1,uint16_ty1);
/**
*@brief繪制矩形
*@paramx0:左上角x坐標(biāo)
*@paramy0:左上角y坐標(biāo)
*@paramx1:右上角x坐標(biāo)
*@paramy2:右上角y坐標(biāo)
*/
voidgui_draw_rect(uint16_tx0,uint16_ty0,uint16_tx1,uint16_ty1);
/**
*@brief填充矩形
*@paramx0:左上角x坐標(biāo)
*@paramy0:左上角y坐標(biāo)
*@paramx1:右上角x坐標(biāo)
*@paramy2:右上角y坐標(biāo)
*@paramshow:0:不顯示,1:顯示
*/
voidgui_fill_rect(uint16_tx0,uint16_ty0,uint16_tx1,uint16_ty1,uint8_tshow);
/**
*@brief在指定位置顯示圖片
*@paramx:x坐標(biāo)
*@paramy:y坐標(biāo)
*@parambmp:圖片
*/
voidgui_draw_bitmap(uint16_tx,uint16_ty,constuint8_t*bmp);
#endif
gui_2d_lib.c
[cpp]view plaincopy
/**
*Copyright(c),2015-2025
*@filegui_2d_lib.c
*@brief2d圖形庫主文件
*@authorjdh
*@date2015/9/6
*@update2015/9/7
*@update2015/11/22
*/
/*********************************************************************
*頭文件
**********************************************************************/
#include"gui_2d_lib.h"
#include"string.h"
/*********************************************************************
*數(shù)據(jù)結(jié)構(gòu)
**********************************************************************/
#pragmapack(1)
/**
*@brief文件頭
*/
struct_Bmp_File_Header
{
//文件標(biāo)志
uint16_ttype;
//文件大小
uint32_tsize;
//保留
uint16_treserved1;
//保留
uint16_treserved2;
//位圖偏移量
uint32_toffbits;
};
/**
*@bri信息頭
*/
struct_Bmp_Info_Header
{
//信息頭大小
uint32_tsize;
//位圖寬度
uint32_twidth;
//位圖高度
uint32_theight;
//位圖的位面數(shù)
uint16_tplanes;
//每個像素點所需的數(shù)據(jù)位數(shù)(24)
uint16_toffbits;
//壓縮算法
uint32_tcompression;
//位圖數(shù)據(jù)字節(jié)數(shù)
u