環(huán)境:
主機:WIN10
開發(fā)環(huán)境:MDK5.13
MCU:STM32F103
源代碼:
gui_widget_progbar.h
/**
*Copyright(c),2015-2025
*@filegui_widget_progbar.h
*@brief文本控件頭文件
*@authorjdh
*@date2015/11/22
*/
#ifndef_GUI_WIDGET_PROGBAR_H_
#define_GUI_WIDGET_PROGBAR_H_
/*********************************************************************
*頭文件
**********************************************************************/
#include"gui_interface.h"
/*********************************************************************
*宏定義
**********************************************************************/
/**
*@brief文本長度.單位:字節(jié)
*/
#defineLEN_WIDGET_TEXT32
/*********************************************************************
*數據結構
**********************************************************************/
/**
*@brief進度條數據結構
*/
typedefstruct_Widget_Progbar
{
//x軸位置
uint16_tx;
//y軸位置
uint16_ty;
//水平尺寸
uint16_txsize;
//垂直尺寸
uint16_tysize;
}*Widget_Progbar_Handle;
/*********************************************************************
*函數
**********************************************************************/
/**
*@brief創(chuàng)建控件
*@paramx:左上角x坐標
*@paramy:左上角y坐標
*@paramxsize:水平尺寸
*@paramysize:垂直尺寸
*@retval控件句柄
*/
Widget_Progbar_Handlegui_widget_progbar_create(uint16_tx,uint16_ty,uint16_txsize,uint16_tysize);
/**
*@brief設置進度
*@paramvalue:百分比,0-100
*/
voidgui_widget_progbar_set_value(Widget_Progbar_Handlehandle,uint8_tvalue);
#endif
gui_widget_progbar.c
/**
*Copyright(c),2015-2025
*@filegui_widget_progbar.c
*@brief進度條控件主文件
*@authorjdh
*@date2015/11/22
*/
/*********************************************************************
*頭文件
**********************************************************************/
#include"gui_widget_progbar.h"
#include"gui_2d_lib.h"
#include"stdlib.h"
/*********************************************************************
*靜態(tài)變量
**********************************************************************/
/**
*@brief百分比
*/
staticuint8_tPercent=0;
/*********************************************************************
*靜態(tài)函數
**********************************************************************/
/**
*@brief控件顯示
*@paramhandle:控件句柄
*/
staticvoidshow(Widget_Progbar_Handlehandle);
/*********************************************************************
*函數
**********************************************************************/
/**
*@brief創(chuàng)建控件
*@paramx:左上角x坐標
*@paramy:左上角y坐標
*@paramxsize:水平尺寸
*@paramysize:垂直尺寸
*@retval控件句柄
*/
Widget_Progbar_Handlegui_widget_progbar_create(uint16_tx,uint16_ty,uint16_txsize,uint16_tysize)
{
Widget_Progbar_Handlehandle;
//控件初始化
handle=malloc(sizeof(*handle));
handle->x=x;
handle->y=y;
handle->xsize=xsize;
handle->ysize=ysize;
//顯示
show(handle);
returnhandle;
}
/**
*@brief設置進度
*@paramvalue:百分比,0-100
*/
voidgui_widget_progbar_set_value(Widget_Progbar_Handlehandle,uint8_tvalue)
{
if(Percent==value)
{
return;
}
if(value { //清除區(qū)域 gui_fill_rect(handle->x,handle->y,handle->x+handle->xsize,handle->y+handle->ysize,0); //顯示 gui_draw_rect(handle->x,handle->y,handle->x+handle->xsize,handle->y+handle->ysize); } //顯示 gui_fill_rect(handle->x+handle->xsize*Percent/100,handle->y, handle->x+handle->xsize*value/100,handle->y+handle->ysize,1); Percent=value; } /** *@brief控件顯示 *@paramhandle:控件句柄 */ staticvoidshow(Widget_Progbar_Handlehandle) { //清除區(qū)域 gui_fill_rect(handle->x,handle->y,handle->x+handle->xsize,handle->y+handle->ysize,0); //顯示 gui_draw_rect(handle->x,handle->y,handle->x+handle->xsize,handle->y+handle->ysize); Percent=0; } 測試代碼: //進度條 staticWidget_Progbar_HandleWidget_Progbar; Widget_Progbar=gui_widget_progbar_create(9,39,111,8); gui_widget_progbar_set_value(Widget_Progbar,50); 效果圖: