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

发布者:superstar10最新更新时间:2020-10-14 来源: eefocus关键字:OLED屏  GUI支持  文本框控件 手机看文章 扫描二维码
随时随地手机看文章

环境:


主机: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,"正常");

关键字:OLED屏  GUI支持  文本框控件 引用地址:为OLED屏增加GUI支持4:文本框控件

上一篇:为OLED屏增加GUI支持5:图片控件
下一篇:为OLED屏增加GUI支持2:2D图形库

推荐阅读最新更新时间:2024-11-10 11:27

推迟供货苹果!LGD首批OLED发货中国
根据韩国媒体报道,由于LG Display生产的小尺寸OLED面板产品良率难以提高,并且没有达到苹果公司追求的标准,所以LG Display像苹果公司提供OLED屏幕的这一计划可能将要延期。据了解,LG面向iPhone的OLED面板最早在2019年开始发货,比此前的计划推迟了大约一年。 同时该消息还指出,LG Display即将量产的OLED面板虽然不会供货给苹果,但首批订单已经达成,将输送给LG电视以及中国的小米公司。过去10年,LG显示器一直为iPhone供应液晶屏。不过,这项利润丰厚的业务处于危险境地,因为苹果可能计划从明年开始为所有新iPhone机型配备OLED面板。三星目前是OLED面板的独家供应商。  据了解,苹果与三
[手机便携]
OLED电视量产困难:基本不降价
  对于用户来说,购买 OLED 屏手机的成本在降低,但是购买这种屏幕的电视,你却基本感受不到降价,因为这类电视售价依然高高在上,让人没法接受。下面就随手机便携小编一起来了解一下相关内容吧。   据研调机构IHS发出的报告显示,随着苹果的加入,中小尺寸 OLED 屏幕的供应量正在加大,而随之而来的好消息就是,成本也在不断的降低,其整体正在接近液晶显示 面板 (LCD)。   与之形成鲜明对比的则是大尺寸 OLED 面板 ,由于量产起来更困难,所以成本下降基本可以忽略。   报告中还强调,OLED是一种自发光显示器,而LCD是被动发光,所以前者无论生产成本、和复杂程度都要远超后者,同时良品率也非常有限,比如55寸超高解析度OLED
[手机便携]
iPhone 12屏幕细节曝光:三星OLED占半壁江山
随着5月份即将进入尾声,距离今年苹果的年度旗舰全新的iPhone 12系列的亮相又近了一步。综合当前比较可靠的消息,今年苹果将依旧提供iPhone 12、iPhone 12Max和iPhone 12 Pro、iPhone 12 Pro Max两个版本共四款机型,而屏幕作为手机最为关键的配置之一,关于其的爆料也显得尤为重要。现在有最新消息,近日有外媒晒出了iPhone 12系列的屏幕信息。 据韩媒最新发布的消息显示,苹果为今年的4款iPhone 12新机共下定了7500万块OLED屏幕,根据此前曝光的消息,这些屏幕将由三星、LG和京东方共同提供,而现在的最新消息则显示出了一些变化
[手机便携]
iPhone 12屏幕细节曝光:三星<font color='red'>OLED</font><font color='red'>屏</font>占半壁江山
OLED难题被解决
京东方发明的解决OLED显示器“烧屏”问题的技术方案,通过对静止画面的检测,对可能存在静止状态的画面进行图像帧的替换,从而智能地进行画面的动态显示,以解决OLED显示器存在的“烧屏”问题,延长显示器的使用寿命。 集微网消息,随着显示技术的不断发展,人们看到的显示屏上的画面也更多彩、更绚丽。然而,如果在显示屏上长时间显示一静止画面,会导致显示屏中常亮的地方亮度衰减比其他地方大。因此,当显示其他画面时会看到静止画面的残留影像,称为残影现象。 例如,有机发光二极管(OLED)显示屏长时间定格在同一地方时,常亮的地方亮度衰减往往比其他地方大,其中对比度较高的地方切换画面后,会产生残影。同时,如果静止画面时间过长,导致像素点老化严重,则会对
[手机便携]
<font color='red'>OLED</font>烧<font color='red'>屏</font>难题被解决
OLED大测试 iPhone X的表现居然是最好?
十年之约,iPhone终于来到了第十个年头。这几年可以说苹果受到了无数的质疑声,毕竟一个设计用四五年苹果也是够拼了。从iPhone 6时代起就没有大变过得iPhone终于迎来了全面屏。搭载了三星显示提供的顶级OLED 屏幕的iPhone X,却又被质疑会烧屏。   我们都知道,由于OLED 屏幕像素自发光的特性,烧屏现象在所难免。于是为了给消费者一个参考,有外媒对iPhone X、三星Note 8和三星S7 Edge三款手机进行了长达510小时的“烧屏”测试。最后的结果却是很戏剧化,iPhone X完美胜出。 iPhone X   测试过程中,三款手机的屏幕持续点亮510小时。iPhone X的屏幕直到510个小时的测试后才出现
[手机便携]
巨头抢占MicroLED市场 OLED面临过产和降价危机
iPhone X推不动OLED热 下个潜力技术会是Micro LED?有机发光二极管(OLED)屏幕原被视为智能手机的未来希望,但苹果去年推出搭载此屏幕的旗舰手机iPhone X却未带动其他厂商抢用OLED的风潮,加上苹果、三星、鸿海也正投资下一种技术MicroLED,或许不久之后OLED就会被其取代。 彭博信息报导,OLED屏幕比液晶屏幕具有可弯折、较省电的特性,而被寄予厚望,但iPhone X的销量却不如市场预期,加上华为、小米、Oppo等中国厂商可能不会那么快采用这种技术,这种屏幕目前正面临过产和降价疑虑。 同时,OLED屏幕容易显色错误和屏幕残影(burn-in)的缺点也是问题。屏幕测试公司DisplayMate执
[电源管理]
三星为什么能独占苹果OLED曲面订单
近日,有韩媒曝光 苹果 与 三星 已经签署了一份最新的合作协议,协议内容包括三星接下来的每个月将向苹果提供6万块曲面 OLED 屏幕。这条消息正好证实了LG和三星都在争取成为苹果OLED屏幕供应商,同时它还表明在竞争中三星成为了赢家,但这并不代表三星将会是苹果的唯一供应商。 可以预见的是,在不远的将来,包括LGD、JDI和富士康在内的几家公司将会共同争取苹果二级供应商的位置。 不过有一点可以确定,当我们看到iPhone搭载OLED屏幕时,绝对不会是iPhone 7这款今年年内铁定要出的机型。 之前,有消息来源表示苹果将在明年的iPhone 7s上使用OLED屏幕,这一时间点比之前流传的2018年才上OLED的时间要早很
[嵌入式]
LG展示18英寸可卷折OLED显示
    摘要: LG Display将在本周举行的国际信息显示学会(Society for Information Display)上展示了一款18英寸的超柔韧OLED显示面板。该显示面板厚度仅为普通纸张厚度,并能在不影响显示功能的情况下折成一个半径只有3厘米的卷筒。     LG Display首席技术官In-Byeong Kang会在周二发表主旨演讲时着重介绍这款产品。In-Byeong Kang周二的主旨演讲题目为《显示产业所面临的机遇与挑战》。     在国际信息显示学会上发表主旨演讲,是LG Display展现显示技术研发成果的努力之一。公司在今年初举行的消费电子展(CES)上就曾展示了多款OLED电视产品,并
[家用电子]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved