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

发布者:真诚的友谊最新更新时间:2016-12-18 来源: eefocus关键字:OLED屏  GUI支持  文本框控件 手机看文章 扫描二维码
随时随地手机看文章

环境:

主机:WIN10

开发环境:MDK5.13

MCU:STM32F103


说明:

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



源代码:

gui_widget_text.h


  1. /** 

  2. * Copyright (c), 2015-2025 

  3. * @file gui_widget_text.h 

  4. * @brief 文本控件头文件 

  5. * @author jdh 

  6. * @date 2015/9/8 

  7. */  

  8.   

  9. #ifndef _GUI_WIDGET_TEXT_H_  

  10. #define _GUI_WIDGET_TEXT_H_  

  11.   

  12. /********************************************************************* 

  13. *                           头文件 

  14. **********************************************************************/  

  15.   

  16. #include "gui_interface.h"  

  17.   

  18. /********************************************************************* 

  19. *                           宏定义 

  20. **********************************************************************/  

  21.   

  22. /** 

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

  24. */  

  25.   

  26. #define LEN_WIDGET_TEXT             32  

  27.   

  28. /********************************************************************* 

  29. *                           数据结构 

  30. **********************************************************************/  

  31.   

  32. /** 

  33. * @brief 文本框数据结构 

  34. */  

  35.   

  36. typedef struct _Widget_Text  

  37. {  

  38.     //x轴位置  

  39.     uint16_t x;  

  40.     //y轴位置  

  41.     uint16_t y;  

  42.     //水平尺寸  

  43.     uint16_t xsize;  

  44.     //垂直尺寸  

  45.     uint16_t ysize;  

  46.     //字体  

  47.     uint8_t font;  

  48.     //文本  

  49.     char s[LEN_WIDGET_TEXT];  

  50. }*Widget_Text_Handle;  

  51.   

  52. /********************************************************************* 

  53. *                           函数 

  54. **********************************************************************/  

  55.   

  56. /** 

  57. * @brief 创建控件text 

  58. * @param x:左上角x坐标 

  59. * @param y:左上角y坐标 

  60. * @param xsize:水平尺寸 

  61. * @param ysize:垂直尺寸 

  62. * @param font:字体 

  63. * @param s:文本 

  64. * @retval 控件句柄 

  65. */  

  66.   

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

  68.   

  69. /** 

  70. * @brief 设置文本 

  71. * @param s:文本 

  72. */  

  73.   

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

  75.   

  76. #endif  



gui_widget_text.c


  1. /** 

  2. * Copyright (c), 2015-2025 

  3. * @file gui_widget_text.c 

  4. * @brief 文本控件主文件 

  5. * @author jdh 

  6. * @date 2015/9/8 

  7. */  

  8.   

  9. /********************************************************************* 

  10. *                           头文件 

  11. **********************************************************************/  

  12.   

  13. #include "gui_widget_text.h"  

  14. #include "gui_2d_lib.h"  

  15. #include "gui_text_lib.h"  

  16. #include "stdlib.h"  

  17. #include "string.h"  

  18.   

  19. /********************************************************************* 

  20. *                           静态函数 

  21. **********************************************************************/  

  22.   

  23. /** 

  24. * @brief 控件显示 

  25. * @param handle:控件句柄 

  26. */  

  27.   

  28. static void show(Widget_Text_Handle handle);  

  29.   

  30. /********************************************************************* 

  31. *                           函数 

  32. **********************************************************************/  

  33.   

  34. /** 

  35. * @brief 创建控件text 

  36. * @param x:左上角x坐标 

  37. * @param y:左上角y坐标 

  38. * @param xsize:水平尺寸 

  39. * @param ysize:垂直尺寸 

  40. * @param font:字体 

  41. * @param s:文本 

  42. * @retval 控件句柄 

  43. */  

  44.   

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

  46. {  

  47.     Widget_Text_Handle handle;  

  48.       

  49.     //控件初始化  

  50.     handle = malloc(sizeof(*handle));  

  51.     handle->x = x;  

  52.     handle->y = y;  

  53.     handle->xsize = xsize;  

  54.     handle->ysize = ysize;  

  55.     handle->font = font;  

  56.     strcpy(handle->s,s);  

  57.       

  58.     //显示  

  59.     show(handle);  

  60.       

  61.     return handle;  

  62. }  

  63.   

  64. /** 

  65. * @brief 设置文本 

  66. * @param s:文本 

  67. */  

  68.   

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

  70. {  

  71.     handle->font = font;  

  72.     strcpy(handle->s,s);  

  73.       

  74.     //显示  

  75.     show(handle);  

  76. }  

  77.   

  78. /** 

  79. * @brief 控件显示 

  80. * @param handle:控件句柄 

  81. */  

  82.   

  83. static void show(Widget_Text_Handle handle)  

  84. {  

  85.     //清除区域  

  86.     gui_fill_rect(handle->x,handle->y,handle->x + handle->xsize,handle->y + handle->ysize,0);  

  87.     //显示  

  88.     gui_disp_string_at(handle->x,handle->y,handle->font,handle->s);  

  89. }  



使用示例:


  1. Widget_Text_Handle Widget_Text_State;  

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



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

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

推荐阅读最新更新时间:2024-03-16 15:26

未来两年苹果产品变化:OLED将普及 mini-LED放至MBP上
新浪数码讯 6月1日上午消息,今日几家外媒分析了苹果产业链现状,并分析出近两年产品走向和趋势:主要是屏幕材质的变化。   OLED屏幕会放到更多iPad上   这则消息来自韩国ETNews,继最近在其最高端12.9 英寸iPad Pro中采用mini-LED屏幕之后,苹果计划明年在“部分”iPad机型中采用OLED显示技术。   该报告援引行业消息人士的话称,从2022年开始,苹果将在部分iPad机型中使用OLED显示屏而不是LCD。该报告没有具体说明哪些iPad‌机型将从LCD转向OLED技术,但知名的分析师郭明錤(Mig Chi Kuo)说,中端iPad Air至少会在明年更新OLED显示屏。   苹果目前将OLED
[手机便携]
韩媒:苹果明年 iPhone或全面采用触控一体OLED ,或引领市
据韩媒etnews报道,业内人士透露,苹果为其2021年新款iPhone订购了一批触摸一体OLED屏。另外,苹果要求明年在新iPhone中使用的所有面板都必须具有触摸集成功能。 据悉,现有的触摸输入是通过将触摸传感器薄膜粘贴到屏幕上来实现的,而触摸一体是指具有内置触摸功能的OLED屏。在OLED屏的薄膜封装上实现触摸功能可使屏幕变薄的同时降低成本。 该报道称,苹果从2007年第一部iPhone发行之日起便一直采用以往的“触摸传感器薄膜”方案,但目前看来这一策略似乎正在改变。苹果或将在今年发布的6.1英寸的iPhone12上采用触摸一体OLED屏,且该屏幕由三星显示器(Samsung Display)和LG显示器(LG Disp
[手机便携]
OLED版iPhone8要使用国产
        多年来,iPhone的屏幕供应商不外乎三星、LG、夏普、Japan Display这几家企业。不过,假如iPhone产品线开始使用OLED屏幕,中国大陆的厂商有可能会分到一杯羹。根据市场调研机构IHSMarkit的报告,由于OLED屏幕的龙头老大三星无法保证供应面板,中国大陆的手机品牌已经开始在试用本土厂商生产的屏幕。 报告称,目前对OLED屏幕需求最大的中国手机品牌是OPPO和Vivo,但是进入2017年之后,像魅族、金立、联想、华为、小米等品牌都会向OLED过渡,届时将会有巨大的市场需求,只依靠三星一家企业是无法供应的。据了解,今年OLED屏幕在国内手机市场的使用率已由2015年的8%上升到13.6%。
[家用电子]
打破三星垄断 夏普OLED显示将在本季度量产
在小尺寸OLED显示屏市场,三星仍然是占山之王,目前已经垄断超过90%的市场份额,这样的局面让其他厂商也蠢蠢欲动。Digitimes的报告称,夏普CEO戴金武宣布,长期以来的lcd制造商夏普准备开始在本季度开始生产智能手机的OLED显示屏,并在今年第二季度和第三季度之间推出自己的品牌智能手机。   目前iPhone X由三星独家供应OLED,但OLED关键制程技术FMM主力供货商大日本印刷和凸版印刷均己被三星绑住禁止外卖,夏普首先要解决如何联系到其他有能力生产FMM的厂商。   与此同时,这对苹果也是好事,因为苹果公司也有兴趣通过分散资源来降低零部件成本。富士康是iPhone X的唯一组装者。富士康老板已经投入了数十亿美元来为这
[家用电子]
2019年过半手机或将使用OLED
        过去,全球95%的OLED面板市场几全由Samsung Display一家所独占,但今年来,除了LGD加入战局之外,中国厂商也加快脚步积极布局;根据CINNO Research资料显示,截至今年6月底止,中国已建与正在兴建中的OLED生产线高达11条。   根据研究机构IHS预测,2020年Samsung Display的OLED面板市占率将从鼎盛时期的95%快速下滑到52%;京东方以15%跃居第二,LG Display11%居第三,中国大陆天马及华星光电则以5~6%左右之市占分居第4及第5名。   IHS预估,2019年智慧型手机的OLED渗透率将首度超越LCD来到50.7%、市值约207亿美元,20
[手机便携]
苹果看好OLED市场,拟投资LG 27亿美元,手机有机爆出大故障
目前的因为OLED工艺还不是十分成熟,还在不断升级当中。但不可否认的是OLED市场前景畅旺,发展OLED配套不仅需要跟随,更需要通过技术创新形成超越。 苹果推出首款采用OLED屏幕的iPhoneX,引发消费者对OLED屏的关注,提振OLED市场。据日本民间调查机构矢野经济研究所公布调查报告显示,2017年全球OLED面板整体市场规模(包含智能手机用、电视用、智能手表用等用途)年增12.3%至4亿7,380万片,且因苹果今后预估将扩大采用OLED面板、中国厂商料跟进苹果脚步采用,因此预估2018年全球OLED面板市场将呈现急速增长,预估将大增34.1%至6亿3,550万片。 因看好OLED面板需求,吸引夏普(Sharp)、J
[电源管理]
一加8T规格解密:120Hz OLED+骁龙865 Plus
据外媒 Android Central 报道,代号为 kebab 的一加 8T 将搭载高通骁龙 865 Plus 处理器。该处理器与一加 8 系列的骁龙 865 相比,CPU 和 GPU 性能略有提高。   一加 8T 还将采用 6.55 英寸 120Hz OLED 屏幕,配备后置四摄,包括 48MP 主摄、16MP 广角镜头、5MP 微距镜头与 2MP 人像镜头。   IT之家了解到,Android Central 还确认一加 8T 将搭载基于 Android 11 的 OxygenOS 11。一加计划在月底或 10 月的第一周推出一加 8T,这在时间方面也与去年 9 月 29 日首次亮相的一加 7T 相似。
[手机便携]
三星垄断OLED国产手机遭钳制
被卷入总统亲信门的三星出现了转机。1月19日韩媒消息称,在历经近4个小时的审讯后,首尔中央地方法院于当日驳回了独立检察组批捕三星电子副会长李在镕的提请,决定不予批捕。   但过去的2016年对李在镕掌舵的三星电子来说并不顺利。旗舰手机Note7的全球召回让这家科技巨头负面缠身。然而,出人意料的是,三星电子2016年四季度的营业利润却同比上涨50%。在这背后,面板、芯片等上游零部件业务不仅成为三星电子的护城河,也成为其打压竞争对手的有力武器。业内分析人士指出,中国手机厂商则可能在2017年遭遇三星更加严苛的供应链考验。   上游护城河   三星电子新一代旗舰手机S8对外亮相的日子越来越近。   有消息称,三星将在今年2月举行的MWC
[手机便携]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved