環(huán)境:
主機:WIN10
開發(fā)環(huán)境:MDK5.13
MCU:STM32F103
說明:
本文定義了文本框控件。在gui中增加了字庫支持后,就可以用文本框來顯示字符。
源代碼:
gui_widget_text.h
/**
*Copyright(c),2015-2025
*@filegui_widget_text.h
*@brief文本控件頭文件
*@authorjdh
*@date2015/9/8
*/
#ifndef_GUI_WIDGET_TEXT_H_
#define_GUI_WIDGET_TEXT_H_
/*********************************************************************
*頭文件
**********************************************************************/
#include"gui_interface.h"
/*********************************************************************
*宏定義
**********************************************************************/
/**
*@brief文本長度.單位:字節(jié)
*/
#defineLEN_WIDGET_TEXT32
/*********************************************************************
*數據結構
**********************************************************************/
/**
*@brief文本框數據結構
*/
typedefstruct_Widget_Text
{
//x軸位置
uint16_tx;
//y軸位置
uint16_ty;
//水平尺寸
uint16_txsize;
//垂直尺寸
uint16_tysize;
//字體
uint8_tfont;
//文本
chars[LEN_WIDGET_TEXT];
}*Widget_Text_Handle;
/*********************************************************************
*函數
**********************************************************************/
/**
*@brief創(chuàng)建控件text
*@paramx:左上角x坐標
*@paramy:左上角y坐標
*@paramxsize:水平尺寸
*@paramysize:垂直尺寸
*@paramfont:字體
*@params:文本
*@retval控件句柄
*/
Widget_Text_Handlegui_widget_text_create(uint16_tx,uint16_ty,uint16_txsize,uint16_tysize,uint8_tfont,char*s);
/**
*@brief設置文本
*@params:文本
*/
voidgui_widget_text_set_text(Widget_Text_Handlehandle,uint8_tfont,char*s);
#endif
gui_widget_text.c
/**
*Copyright(c),2015-2025
*@filegui_widget_text.c
*@brief文本控件主文件
*@authorjdh
*@date2015/9/8
*/
/*********************************************************************
*頭文件
**********************************************************************/
#include"gui_widget_text.h"
#include"gui_2d_lib.h"
#include"gui_text_lib.h"
#include"stdlib.h"
#include"string.h"
/*********************************************************************
*靜態(tài)函數
**********************************************************************/
/**
*@brief控件顯示
*@paramhandle:控件句柄
*/
staticvoidshow(Widget_Text_Handlehandle);
/*********************************************************************
*函數
**********************************************************************/
/**
*@brief創(chuàng)建控件text
*@paramx:左上角x坐標
*@paramy:左上角y坐標
*@paramxsize:水平尺寸
*@paramysize:垂直尺寸
*@paramfont:字體
*@params:文本
*@retval控件句柄
*/
Widget_Text_Handlegui_widget_text_create(uint16_tx,uint16_ty,uint16_txsize,uint16_tysize,uint8_tfont,char*s)
{
Widget_Text_Handlehandle;
//控件初始化
handle=malloc(sizeof(*handle));
handle->x=x;
handle->y=y;
handle->xsize=xsize;
handle->ysize=ysize;
handle->font=font;
strcpy(handle->s,s);
//顯示
show(handle);
returnhandle;
}
/**
*@brief設置文本
*@params:文本
*/
voidgui_widget_text_set_text(Widget_Text_Handlehandle,uint8_tfont,char*s)
{
handle->font=font;
strcpy(handle->s,s);
//顯示
show(handle);
}
/**
*@brief控件顯示
*@paramhandle:控件句柄
*/
staticvoidshow(Widget_Text_Handlehandle)
{
//清除區(qū)域
gui_fill_rect(handle->x,handle->y,handle->x+handle->xsize,handle->y+handle->ysize,0);
//顯示
gui_disp_string_at(handle->x,handle->y,handle->font,handle->s);
}
使用示例:
Widget_Text_HandleWidget_Text_State;
Widget_Text_State=gui_widget_text_create(93,40,30,20,GB18030_20X20,"正常");