历史上的今天
今天是:2024年10月14日(星期一)
2020年10月14日 | 为OLED屏增加GUI支持4:文本框控件
2020-10-14 来源:eefocus
环境:
主机: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,"正常");
史海拾趣
|
本帖最后由 paulhyde 于 2014-9-15 09:44 编辑 1. 竞赛报名 1) 参赛对象:江苏省内所有设置电类专业的高校(包括本科和高职高专)在籍学生; 2) 竞赛组织:由各参赛学校指定竞赛负责人和领队统一负责本校参赛队的组队、报名、竞赛和送审工 ...… 查看全部问答> |
|
作者:华清远见嵌入式学院 不记得是什么时候了,曾经看过一篇文章,里面有一句话:“痛并快乐着”让我印象非常深刻,在刚看到这句话的那一刻,自己颇有些感同身受的共鸣。回想一下:从学生到技术人的成长过程是痛并快乐着的、跟团队一起进行项目研 ...… 查看全部问答> |
|
就在不久之前,大多数微波电容器还都基于多层陶瓷烧制技术。在生产过程中,多层高导电性的金属合金电极层和低损耗的陶瓷绝缘层交错排列,从而得到所需要的电容值。然后,将合成的叠层进行高温烧制,将其烧结成单片结构。这一工艺目前仍然很好地满足 ...… 查看全部问答> |
|
各位大侠: 小弟有一事求教:我有一个网上购物的网站,要做一个应用,就是把用户在网上下的订单直接用GPRS的方式发送到商家的接收和打印终端上,这种终端现在市面上没有,主要难搞定的是数据的发送和接收,哪位高手可以帮我做开发? ...… 查看全部问答> |
|
mini2440 jlink 间接烧写nand 以及 uboot 我的是256M的nand。。没有并口,使用jlink。 使用supervivi-128M,这个文件直接烧写到nor,启动正常。从nor启动后,利用\'a\'命令烧到nand,然后从nand也能正常启动(需要按下六个按键中的一个)。说明这个文件自适应nor、nand。 我打算从nand启 ...… 查看全部问答> |
|
今天插上仿真器的数据线,突然出现指示灯不停闪烁,频率差不多是10hz。点击擦除芯片,出现:can not connect to j-link via usb。failed to connect could not erase chip,not connected擦出按手册说,是启动,那也不能不停启动啊。昨天还没 ...… 查看全部问答> |




