为OLED屏添加GUI支持6:进度条控件
为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
/**
* 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;
}
測试代码:
//进度条
static Widget_Progbar_Handle Widget_Progbar;
Widget_Progbar = gui_widget_progbar_create(9,39,111,8);
gui_widget_progbar_set_value(Widget_Progbar,50);
效果图:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
为OLED屏添加GUI支持6:进度条控件的更多相关文章
- 为OLED屏添加GUI支持3:字库
为OLED屏添加GUI支持3:字库 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN10 开发环境:MDK5.13 MCU:STM3 ...
- 为OLED屏添加GUI支持2:2D图形库
为OLED屏添加GUI支持2:2D图形库 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN10 开发环境:MDK5.13 MCU:S ...
- 为OLED屏增加GUI支持
为OLED屏增加GUI支持1:OLED驱动 为OLED屏增加GUI支持2:2D图形库 为OLED屏增加GUI支持3:字库 为OLED屏增加GUI支持4:文本框控件 为OLED屏增加GUI支持5:图片控 ...
- 图像分辨率 像素 大小 LCD显示 为OLED屏增加GUI支持
1. 根据一张标准图片的分辨率,结合每个像素的大小,可以计算得到这张图片的大小(字节数) 补充点:bmp格式的图片有24色或者32色.(其一个像素点可能占用24bits或者32bits) 至于图片怎 ...
- DevExpress的进度条控件ProgressBarControl的使用-以ZedGraph添加曲线进度为例
场景 Winform控件-DevExpress18下载安装注册以及在VS中使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1 ...
- 在DevExpress GridControl中添加进度条控件 z
首先可以使用 DevExpress GridControl 自带的进度条控件. 但是我要用一个方法来设置所有的单元格进度,而不是每个单元格都要设置一遍,同时我想要根据进度值不同,进度条显示不同的颜色. ...
- Photoshop和WPF双剑配合,打造炫酷个性的进度条控件
现在如果想打造一款专业的App,UI的设计和操作的简便性相当重要.UI设计可以借助Photoshop或者AI等设计工具,之前了解到WPF设计工具Expression Blend可以直接导入PSD文件或 ...
- HslControls组件库 工业控件库 曲线控件 时间控件 管道控件 温度计控件 阀门控件 传送带控件 进度条控件 电池控件 数码管控件等等
本篇博客主要对 HslControls 组件做一个大概的总览介绍,更详细的内容可以参照页面里的子链接,还有github上的源代码,然后进行相关的学习,和使用. Prepare 先从nuget下载到组件 ...
- 示例:WPF中Slider控件封装的缓冲播放进度条控件
原文:示例:WPF中Slider控件封装的缓冲播放进度条控件 一.目的:模仿播放器播放进度条,支持缓冲任务功能 二.进度: 实现类似播放器中带缓存的播放样式(播放区域.缓冲区域.全部区域等样式) 实现 ...
随机推荐
- POJ 2407 Relatives【欧拉函数】
<题目链接> 题目大意: Given n, a positive integer, how many positive integers less than n are relativel ...
- SystemTap - 安装
按照SystemTap Beginners Guide的Installation and Setup部分安装了SystemTap,没想到竟然还有点曲折,在这里纪录一下. 环境 Linux发行版本:Ce ...
- 码云,git使用 教程-便签
码云,git使用 教程-便签 Code cloud, git use tutorial - note 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.c ...
- APIO2018 铜滚记
「一旦闭上双眼,就昏昏欲睡」「仿佛与这个世界的联系,被瞬间切断」「可是,负罪感与背德感又会在黑暗中将我吞噬」「即使这样,却也无法与身体的疲惫抗衡」 「如果,这些东西也无法让意识的存在稳定下来的话」「那 ...
- 潭州课堂25班:Ph201805201 爬虫基础 第十四课 js破解 (课堂笔记)
打断点 找要的数据 鼠标的点击事件 新浪微博登录 表单提交分析 : 先佃输入错误密码开始调式 f10 往下走, f11 进入函数 sh + f11 跳出函数 # -*- coding: utf-8 - ...
- The type javax.servlet.http.HttpServletRequest cannot be resolved. It is indirectly referenced from required .class files
我的方法:是缺少servlet的引用库,解决如下 1.工程右键-properties->java build path 2.在java build path的libraries tab页中选择A ...
- linux sendmail 发送缓慢的问题
这个问题关键就是hosts里面对于本机host的设置有问题,你可以看下/var/log/mail.log retry 和 sleeping,再加上其他时间,用sendmail发送邮件等这么久,太累了吧 ...
- CocosCreator项目结构
1,通过 Dashboard,我们可以创建一个 Hello World 项目作为开始,创建之后的项目有特定的文件夹结构.[参考来源:官方文档] 2,初次创建并打开一个 Cocos Creator 项目 ...
- tcp连接状态查看
linux常用查看tcp状态工具netstat和ss,这两个工具查看时都有1个Recv-Q和Send-Q 解释如下: 对应处于Listen状态的套接字: Recv-Q表示已建立连接队列中连接个数(等待 ...
- How to change the implementation (detour) of an externally declared function
原文地址:http://stackoverflow.com/questions/6905287/how-to-change-the-implementation-detour-of-an-extern ...