打印
[应用相关]

(转)为OLED屏增加GUI支持4:文本框控件

[复制链接]
585|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
木木guainv|  楼主 | 2018-8-15 13:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

本文博客链接:http://blog.csdn.net/jdh99

环境:

主机:WIN10

开发环境:MDK5.13

MCU:STM32F103



说明:
本文定义了文本框控件。在gui中增加了字库支持后,就可以用文本框来显示字符。





源代码:

gui_widget_text.h



  • /**



  • * Copyright (c), 2015-2025



  • * @file gui_widget_text.h



  • * @brief 文本控件头文件



  • * @author jdh



  • * @date 2015/9/8



  • */







  • #ifndef _GUI_WIDGET_TEXT_H_



  • #define _GUI_WIDGET_TEXT_H_







  • /*********************************************************************



  • *                                                        头文件



  • **********************************************************************/







  • #include "gui_interface.h"







  • /*********************************************************************



  • *                                                        宏定义



  • **********************************************************************/







  • /**



  • * @brief 文本长度.单位:字节



  • */







  • #define LEN_WIDGET_TEXT                                32







  • /*********************************************************************



  • *                                                        数据结构



  • **********************************************************************/







  • /**



  • * @brief 文本框数据结构



  • */







  • typedef struct _Widget_Text



  • {



  •         //x轴位置



  •         uint16_t x;



  •         //y轴位置



  •         uint16_t y;



  •         //水平尺寸



  •         uint16_t xsize;



  •         //垂直尺寸



  •         uint16_t ysize;



  •         //字体



  •         uint8_t font;



  •         //文本



  •         char s[LEN_WIDGET_TEXT];



  • }*Widget_Text_Handle;







  • /*********************************************************************



  • *                                                        函数



  • **********************************************************************/







  • /**



  • * @brief 创建控件text



  • * @param x:左上角x坐标



  • * @param y:左上角y坐标



  • * @param xsize:水平尺寸



  • * @param ysize:垂直尺寸



  • * @param font:字体



  • * @param s:文本



  • * @retval 控件句柄



  • */







  • Widget_Text_Handle gui_widget_text_create(uint16_t x,uint16_t y,uint16_t xsize,uint16_t ysize,uint8_t font,char *s);







  • /**



  • * @brief 设置文本



  • * @param s:文本



  • */







  • void gui_widget_text_set_text(Widget_Text_Handle handle,uint8_t font,char *s);







  • #endif











gui_widget_text.c



  • /**



  • * Copyright (c), 2015-2025



  • * @file gui_widget_text.c



  • * @brief 文本控件主文件



  • * @author jdh



  • * @date 2015/9/8



  • */







  • /*********************************************************************



  • *                                                        头文件



  • **********************************************************************/







  • #include "gui_widget_text.h"



  • #include "gui_2d_lib.h"



  • #include "gui_text_lib.h"



  • #include "stdlib.h"



  • #include "string.h"







  • /*********************************************************************



  • *                                                        静态函数



  • **********************************************************************/







  • /**



  • * @brief 控件显示



  • * @param handle:控件句柄



  • */







  • static void show(Widget_Text_Handle handle);







  • /*********************************************************************



  • *                                                        函数



  • **********************************************************************/







  • /**



  • * @brief 创建控件text



  • * @param x:左上角x坐标



  • * @param y:左上角y坐标



  • * @param xsize:水平尺寸



  • * @param ysize:垂直尺寸



  • * @param font:字体



  • * @param s:文本



  • * @retval 控件句柄



  • */







  • Widget_Text_Handle gui_widget_text_create(uint16_t x,uint16_t y,uint16_t xsize,uint16_t ysize,uint8_t font,char *s)



  • {



  •         Widget_Text_Handle handle;







  •         //控件初始化



  •         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);







  •         return handle;



  • }







  • /**



  • * @brief 设置文本



  • * @param s:文本



  • */







  • void gui_widget_text_set_text(Widget_Text_Handle handle,uint8_t font,char *s)



  • {



  •         handle->font = font;



  •         strcpy(handle->s,s);







  •         //显示



  •         show(handle);



  • }







  • /**



  • * @brief 控件显示



  • * @param handle:控件句柄



  • */







  • static void show(Widget_Text_Handle handle)



  • {



  •         //清除区域



  •         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_Handle Widget_Text_State;



  • Widget_Text_State = gui_widget_text_create(93,40,30,20,GB18030_20X20,"正常");



沙发
mmuuss586| | 2018-9-5 09:37 | 只看该作者
感谢分享

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

141

主题

4093

帖子

5

粉丝