为OLED屏增加GUI支持6:进度条控件
来源:互联网 发布:java和php哪个就业好 编辑:程序博客网 时间:2024/05/21 22:50
为OLED屏增加GUI支持6:进度条控件
本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明.
环境:
主机:WIN10
开发环境:MDK5.13
MCU:STM32F103
源代码:
gui_widget_progbar.h
- /**
- * Copyright (c), 2015-2025
- * @file gui_widget_progbar.h
- * @brief 文本控件头文件
- * @author jdh
- * @date 2015/11/22
- */
- #ifndef _GUI_WIDGET_PROGBAR_H_
- #define _GUI_WIDGET_PROGBAR_H_
- /*********************************************************************
- * 头文件
- **********************************************************************/
- #include "gui_interface.h"
- /*********************************************************************
- * 宏定义
- **********************************************************************/
- /**
- * @brief 文本长度.单位:字节
- */
- #define LEN_WIDGET_TEXT 32
- /*********************************************************************
- * 数据结构
- **********************************************************************/
- /**
- * @brief 进度条数据结构
- */
- typedef struct _Widget_Progbar
- {
- //x轴位置
- uint16_t x;
- //y轴位置
- uint16_t y;
- //水平尺寸
- uint16_t xsize;
- //垂直尺寸
- uint16_t ysize;
- }*Widget_Progbar_Handle;
- /*********************************************************************
- * 函数
- **********************************************************************/
- /**
- * @brief 创建控件
- * @param x:左上角x坐标
- * @param y:左上角y坐标
- * @param xsize:水平尺寸
- * @param ysize:垂直尺寸
- * @retval 控件句柄
- */
- Widget_Progbar_Handle gui_widget_progbar_create(uint16_t x,uint16_t y,uint16_t xsize,uint16_t ysize);
- /**
- * @brief 设置进度
- * @param value:百分比,0-100
- */
- void gui_widget_progbar_set_value(Widget_Progbar_Handle handle,uint8_t value);
- #endif
gui_widget_progbar.c
- <strong>/**
- * Copyright (c), 2015-2025
- * @file gui_widget_progbar.c
- * @brief 进度条控件主文件
- * @author jdh
- * @date 2015/11/22
- */
- /*********************************************************************
- * 头文件
- **********************************************************************/
- #include "gui_widget_progbar.h"
- #include "gui_2d_lib.h"
- #include "stdlib.h"
- /*********************************************************************
- * 静态变量
- **********************************************************************/
- /**
- * @brief 百分比
- */
- static uint8_t Percent = 0;
- /*********************************************************************
- * 静态函数
- **********************************************************************/
- /**
- * @brief 控件显示
- * @param handle:控件句柄
- */
- static void show(Widget_Progbar_Handle handle);
- /*********************************************************************
- * 函数
- **********************************************************************/
- /**
- * @brief 创建控件
- * @param x:左上角x坐标
- * @param y:左上角y坐标
- * @param xsize:水平尺寸
- * @param ysize:垂直尺寸
- * @retval 控件句柄
- */
- Widget_Progbar_Handle gui_widget_progbar_create(uint16_t x,uint16_t y,uint16_t xsize,uint16_t ysize)
- {
- Widget_Progbar_Handle handle;
- //控件初始化
- handle = malloc(sizeof(*handle));
- handle->x = x;
- handle->y = y;
- handle->xsize = xsize;
- handle->ysize = ysize;
- //显示
- show(handle);
- return handle;
- }
- /**
- * @brief 设置进度
- * @param value:百分比,0-100
- */
- void gui_widget_progbar_set_value(Widget_Progbar_Handle handle,uint8_t value)
- {
- if (Percent == value)
- {
- return;
- }
- if (value < Percent)
- {
- //清除区域
- gui_fill_rect(handle->x,handle->y,handle->x + handle->xsize,handle->y + handle->ysize,0);
- //显示
- gui_draw_rect(handle->x,handle->y,handle->x + handle->xsize,handle->y + handle->ysize);
- }
- //显示
- gui_fill_rect(handle->x + handle->xsize * Percent / 100,handle->y,
- handle->x + handle->xsize * value / 100,handle->y + handle->ysize,1);
- Percent = value;
- }
- /**
- * @brief 控件显示
- * @param handle:控件句柄
- */
- static void show(Widget_Progbar_Handle handle)
- {
- //清除区域
- gui_fill_rect(handle->x,handle->y,handle->x + handle->xsize,handle->y + handle->ysize,0);
- //显示
- gui_draw_rect(handle->x,handle->y,handle->x + handle->xsize,handle->y + handle->ysize);
- Percent = 0;
- }
- </strong>
测试代码:
- //进度条
- static Widget_Progbar_Handle Widget_Progbar;
- Widget_Progbar = gui_widget_progbar_create(9,39,111,8);
- gui_widget_progbar_set_value(Widget_Progbar,50);
0 0
- 为OLED屏增加GUI支持6:进度条控件
- 为OLED屏增加GUI支持6:进度条控件
- 为OLED屏增加GUI支持4:文本框控件
- 为OLED屏增加GUI支持5:图片控件
- 为OLED屏增加GUI支持1:OLED驱动
- 为OLED屏增加GUI支持3:字库
- 为OLED屏增加GUI支持7:综合实例
- 为OLED屏增加GUI支持2:2D图形库
- OLED GUI
- eCGUI-增加JPEG图像支持!(嵌入式GUI)
- GUI 剖析之控件篇之 进度条
- 为Empathy增加QQ支持
- 为Empathy增加QQ支持
- 为SimpleCursorAdapter增加CheckBox支持
- 为项目增加ibatis支持
- 为项目增加log4j支持
- 为JDBC增加命名参数的支持
- 为 FireFox 增加 innerText 属性支持
- 《跨终端 Web》- 读书笔记(二)
- javaScript高级程序设计学习笔记(5中)
- 反射_通过反射越过泛型检查
- iOS开发UILabel篇:iOS 8 下中划线失效的解决方法
- Vue 深入探秘
- 为OLED屏增加GUI支持6:进度条控件
- Spring整合JMS(四)——事务管理
- 7.Scala类的属性和对象私有字段实战详解
- urllib的parse模块
- 聚集、group by、having语句执行原理
- 嵌入式Linux交叉编译环境配置
- application loader提交 app store error itms-90034:missing or invalid signature.the bundle........... i
- 自定义异常处理器Thread.UncaughtExceptionHandler
- 微信验证服务器地址有效性