为OLED屏增加GUI支持6:进度条控件

发布者:幸福之路最新更新时间:2016-12-18 来源: eefocus关键字:OLED屏  GUI支持  进度条控件 手机看文章 扫描二维码
随时随地手机看文章

环境:

主机:WIN10

开发环境:MDK5.13

MCU:STM32F103



源代码:

gui_widget_progbar.h


  1. /** 

  2. * Copyright (c), 2015-2025 

  3. * @file gui_widget_progbar.h 

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

  5. * @author jdh 

  6. * @date 2015/11/22 

  7. */  

  8.   

  9. #ifndef _GUI_WIDGET_PROGBAR_H_  

  10. #define _GUI_WIDGET_PROGBAR_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_Progbar  

  37. {  

  38.     //x轴位置  

  39.     uint16_t x;  

  40.     //y轴位置  

  41.     uint16_t y;  

  42.     //水平尺寸  

  43.     uint16_t xsize;  

  44.     //垂直尺寸  

  45.     uint16_t ysize;  

  46. }*Widget_Progbar_Handle;  

  47.   

  48. /********************************************************************* 

  49. *                           函数 

  50. **********************************************************************/  

  51.   

  52. /** 

  53. * @brief 创建控件 

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

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

  56. * @param xsize:水平尺寸 

  57. * @param ysize:垂直尺寸 

  58. * @retval 控件句柄 

  59. */  

  60.   

  61. Widget_Progbar_Handle gui_widget_progbar_create(uint16_t x,uint16_t y,uint16_t xsize,uint16_t ysize);  

  62.   

  63. /** 

  64. * @brief 设置进度 

  65. * @param value:百分比,0-100 

  66. */  

  67.   

  68. void gui_widget_progbar_set_value(Widget_Progbar_Handle handle,uint8_t value);  

  69.   

  70. #endif  




gui_widget_progbar.c


  1. /** 

  2. * Copyright (c), 2015-2025 

  3. * @file gui_widget_progbar.c 

  4. * @brief 进度条控件主文件 

  5. * @author jdh 

  6. * @date 2015/11/22 

  7. */  

  8.   

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

  10. *                           头文件 

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

  12.   

  13. #include "gui_widget_progbar.h"  

  14. #include "gui_2d_lib.h"  

  15. #include "stdlib.h"  

  16.   

  17. /********************************************************************* 

  18. *                           静态变量 

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

  20.   

  21. /** 

  22. * @brief 百分比 

  23. */  

  24.   

  25. static uint8_t Percent = 0;  

  26.   

  27. /********************************************************************* 

  28. *                           静态函数 

  29. **********************************************************************/  

  30.   

  31. /** 

  32. * @brief 控件显示 

  33. * @param handle:控件句柄 

  34. */  

  35.   

  36. static void show(Widget_Progbar_Handle handle);  

  37.   

  38. /********************************************************************* 

  39. *                           函数 

  40. **********************************************************************/  

  41.   

  42. /** 

  43. * @brief 创建控件 

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

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

  46. * @param xsize:水平尺寸 

  47. * @param ysize:垂直尺寸 

  48. * @retval 控件句柄 

  49. */  

  50.   

  51. Widget_Progbar_Handle gui_widget_progbar_create(uint16_t x,uint16_t y,uint16_t xsize,uint16_t ysize)  

  52. {  

  53.     Widget_Progbar_Handle handle;  

  54.       

  55.     //控件初始化  

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

  57.     handle->x = x;  

  58.     handle->y = y;  

  59.     handle->xsize = xsize;  

  60.     handle->ysize = ysize;  

  61.       

  62.     //显示  

  63.     show(handle);  

  64.       

  65.     return handle;  

  66. }  

  67.   

  68. /** 

  69. * @brief 设置进度 

  70. * @param value:百分比,0-100 

  71. */  

  72.   

  73. void gui_widget_progbar_set_value(Widget_Progbar_Handle handle,uint8_t value)  

  74. {  

  75.     if (Percent == value)  

  76.     {  

  77.         return;  

  78.     }  

  79.       

  80.     if (value < Percent)  

  81.     {  

  82.         //清除区域  

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

  84.         //显示  

  85.         gui_draw_rect(handle->x,handle->y,handle->x + handle->xsize,handle->y + handle->ysize);  

  86.     }  

  87.       

  88.     //显示  

  89.     gui_fill_rect(handle->x + handle->xsize * Percent / 100,handle->y,  

  90.                   handle->x + handle->xsize * value / 100,handle->y + handle->ysize,1);  

  91.     Percent = value;  

  92. }  

  93.   

  94. /** 

  95. * @brief 控件显示 

  96. * @param handle:控件句柄 

  97. */  

  98.   

  99. static void show(Widget_Progbar_Handle handle)  

  100. {  

  101.     //清除区域  

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

  103.     //显示  

  104.     gui_draw_rect(handle->x,handle->y,handle->x + handle->xsize,handle->y + handle->ysize);  

  105.     Percent = 0;  

  106. }  

  107.   

测试代码:


  1. //进度条  

  2. static Widget_Progbar_Handle Widget_Progbar;  

  3. Widget_Progbar = gui_widget_progbar_create(9,39,111,8);  

  4. gui_widget_progbar_set_value(Widget_Progbar,50);  



效果图:


关键字:OLED屏  GUI支持  进度条控件 引用地址:为OLED屏增加GUI支持6:进度条控件

上一篇:为OLED屏增加GUI支持5:图片控件
下一篇:为OLED屏增加GUI支持7:综合实例

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

OLED电视灼危机倒逼发问 QLED有望成为大电视的正途
曾经OLED电视被认为是大屏电视的希望,但是根据市场调查可知,目前的OLED电视陷入灼屏危机,技术成熟度成为了问号。反而是以三星、TCL为代表的QLED阵营开始慢慢崛起。 从高铁技术,到屏显技术、识别技术,每一次重大技术路线选择,影响着行业前进的方向和格局,不是每一项技术创新都能改变世界。 OLED电视灼屏问题越来越多,危机愈演愈烈,让人扼腕叹息,也在意料之中,这一天似乎早已注定。 OLED和QLED一直存在路线之争,一方是以LG、创维为代表的OLED阵营,一方是以三星、TCL为代表的QLED阵营。现在看来,QLED才是大屏电视的正途,而OLED寿命问题明朗化、未来命运堪忧,这场路线之争正逐步划上句话。 从索尼OL
[电源管理]
三星预计折叠手机市场会爆发,将可折叠OLED产量目标增
根据外媒 BusinessKorea 报道,三星显示(Samsung Display)预计未来折叠屏手机市场会爆发,为了应对不断增长的 OLED 面板需求,该公司计划将可折叠 OLED 屏产量目标从每年 1700 万片提升至 2500 万片。   截至目前,三星仍是折叠屏手机中出货量最大的品牌,但随着多家中国厂商相继推出折叠屏机型,三星的市场份额将会下降。   OPPO 于 12 月 15 日正式发布了 OPPO Find N 折叠屏手机,其 7.1 英寸折叠内屏由三星制造,采用 E5 发光材质,支持 1Hz-120Hz 自适应刷新率。华为 P50 Pocket 折叠屏手机也将于近期发布,其折叠屏预计由京东方提供。   
[手机便携]
三季度全球OLED手机市场规模达47亿美元 同比增30%
腾讯科技讯 据外电报道,市场调研公司IHS Markit周四发布报告称,今年第三季度全球智能手机用OLED显示屏的市场规模达到47亿美元,较去年同期的36亿美元激增了30%。 作为一种新型的屏幕类型,OLED有着无需背光源,可以自发光,可视角度更大、色彩更丰富、节能显著、可柔性弯曲等优点。随着苹果跟随部分中国厂商、三星电子,开始在旗舰智能手机iPhone X开始采用OLED显示屏,预计到2018年将会有更多的手机厂商和型号采用OLED显示屏。IHS Market此前就预测,今年将有36%的智能手机搭载柔性OLED屏幕。到了2020年,这一比例将上升至53%。 业内人士指出,OLED未来需求持续高涨,预计直至2020年柔性O
[手机便携]
三星独立VR头盔配有超高分辨率OLED显示
一直以来,网络中都有传闻称三星正在研发一种独立的虚拟现实头盔,无需智能手机配合使用,它的所有内部配件都被封装在头盔内部。今天,一份最新的报告称,三星独立的Gear VR头盔将会配备一个像素密度为2000ppi的高分辨率显示屏。下面就随电源管理小编一起来了解一下相关内容吧。   三星独立VR头盔配有超高分辨率OLED显示屏 也许,你对于像素密度2000ppi的显示屏没有一个非常具体的概念,那么你可以将它与Oculus Rift的显示屏的对比来讲,Oculus Rift采用像素密度为460ppi的显示屏。 有些人可能会担心,在虚拟现实头盔中使用这种高分辨率显示屏可能引发灾难,因为增加分辨率可能会引发恶心、眩晕等症状。报告称,三星
[电源管理]
荣耀70系列入网:6.67英寸OLED+4800mAh电池
今日,据数码博主透露,型号为FNE-AN00的荣耀新机通过工信部认证入网,这应该是将要推出的荣耀70系列手机。   据爆料,该机配备6.67英寸OLED屏幕,分辨率为1080P,额定4800mAh电池,机身厚度7.91mm。   此前曾报道,荣耀70系列将会有荣耀70、荣耀70 Pro、荣耀70 Pro+三款机型,分别搭载高通骁龙7 Gen1、天玑8100、天玑9000处理器。其中骁龙7 Gen1是高通最新的7系处理器。   影像方面,荣耀70将采用1亿像素主摄,并配备800万像素超广角镜头和200万像素微距镜头。荣耀70 Pro和70 Pro+都将采用双5000万像素的广角/超广角镜头,主摄为IMX766,支持OI
[手机便携]
荣耀70系列入网:6.67英寸<font color='red'>OLED</font><font color='red'>屏</font>+4800mAh电池
OLED时代帷幕拉开LGD增资OLED8.5代线
      日前,LGDis-play宣布投资增设全球首条条8 .5代O L E D面板生产线,标志着大屏幕OLED时代的帷幕已经拉开,OLED电视的浪潮即将袭来。   在CRT和液晶电视之后,第三次显示技术革命正在开启,作为被公认为最有希望取代液晶技术的下一代显示技术,OLED(有机发光二极管)技术已暂露头角。与液晶技术需要搭载背光源不同,OLED利用了有机物质自发光的特性,不需要背光源,重量与厚度可减少到LCD的20%以下。同时,它具备优秀的画质,能够让产品实现完美外形设计,并可衍生出可弯曲显示器、透明显示器,被称为次世代显示技术。   然而,由于像素附着技术难于掌握,O LE D一直难以实现大型化量产,这成为阻碍其前进的最
[家用电子]
松下将OLED显示融于家具中
未来家居是怎么样的?多数人先想到会是充满科技感的场景,就如同科幻电影一般,各类家具皆隐藏于各个镜子中,随手一挥就能展示开来。当然,像这样子天马行空的场景想要实现还有很多技术壁垒需要突破,而这也给了很多厂商新的想法,并尝试推出更科技感十足的技术。从智能家电到智能家具,似乎这一切都成了厂商们独特的素材,比如松下在近期就推出一款透明OLED显示屏,它无缝集成了松下的显示新技术,外观看起来就像一个玻璃柜。   据介绍,松下这款透明的OLED显示屏的概念是由斯堪的纳维亚设计师丹尼尔·里巴肯和松下京都设计公司构思,利用前者在家具设计方面的专业知识和后者的技术知识,探索将视听设备与用户家具空间的融合。这也让它成为了瑞士家具品牌Vitra的
[家用电子]
松下将<font color='red'>OLED</font>显示<font color='red'>屏</font>融于家具中
基于OLED的分布式多电子公告系统设计与实现
  1 引言   新一代 显示 器件有机电致发 光显示 器件 OLED (Organ ic Light Emi ttingDiode)厚度为 LCD 的1/3,响应速度是LCD 元件 的1000倍,低温特性好,在-40℃能正常显示,OLED主动发光的特性使其几乎没有视角问题,在很大的角度内观看,显示厕面仍不失真;OLED能够在不同材质的基板上制造,可做成能弯曲的柔软显示器;外形不受限制,可以是任何形状;可以放到任意物体的表面,所以特别适于户外大屏幕 电子屏 广告显示领域。基于上述优点,设计开发一套能在多个公共场合(如厂区、校区)同步发布电子公告的多电子图文广告屏。该系统基于通用串行 总线 ( USB )传输,速度快、可靠性高,有
[电源管理]
基于<font color='red'>OLED</font>的分布式多<font color='red'>屏</font>电子公告系统设计与实现
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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