为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控件封装的缓冲播放进度条控件 一.目的:模仿播放器播放进度条,支持缓冲任务功能 二.进度: 实现类似播放器中带缓存的播放样式(播放区域.缓冲区域.全部区域等样式) 实现 ...
随机推荐
- Linux系统命令符01
##重启下虚拟机 [root@bogon ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKN ...
- 使用numpy产生随机数
numpy中的random模块包含了很多方法可以用来产生随机数,这篇文章将对random中的一些常用方法做一个总结. 1.numpy.random.rand(d0, d1, ..., dn) 作用:产 ...
- 解决html5中video标签无法播放mp4问题的办法
这篇文章主要给大家介绍了关于解决html5中video标签无法播放mp4问题的办法,文中介绍的非常详细,相信会对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧. 最近发现了一个 ...
- Jmeter脚本录制方法(二)手工编写脚本(jmeter与fiddler结合使用)
jmeter脚本录制方法可以分三种,前几天写的一篇文章中,已介绍了前两种,今天来说下第三种,手工编写脚本,建议使用这一种方法,虽然写的过程有点繁琐,但调试脚本比前两者方式都要便捷. 首先来看下三种方式 ...
- 关于Git的总结
首先我们先看一张图: 首先我们必须要先理解这几个概念:暂存区,本地仓库,远程仓库 暂存区:这个是我们每一次进行代码修改的地方,例如我们ieda的所编译的代码就是缓存区 本地仓库:是我们每一次pull, ...
- YUI Compressor JS和CSS压缩工具使用方式(使用前安装JDK)
压缩测试: 选中 test.js, 执行右键菜单“Process with &YUICompressor”,会生成 test-min.js. 注意事项: 1. 需要安装 JDK >= 1 ...
- COGS.1901.[模板][国家集训队2011]数颜色(带修改莫队)
题目链接 COGS BZOJ2120 洛谷P1903 /* Add和Subd函数中的vis不能直接设为=1或=0 比如 l=1,r=0 -> l=3,r=5 时,[1,5]的vis标记全都是1 ...
- [NOIp2010提高组]关押罪犯
OJ题号:洛谷1525 思路:贪心. 先将所有的人按怨气值从大到小排一下,然后依次尝试将双方分入两个不同的监狱,如果失败(即已分入相同的监狱),则输出这个怨气值. #include<cstdio ...
- bootStrap中的ul导航4
<div class="container"> <br/> <ul class="nav nav-pills nav-justified&q ...
- 设置TabBar图片
设置TabBar图片 // 拿到 TabBar 在拿到想应的item UITabBar *tabBar = _tabBarController.tabBar; UITabBarItem *item0 ...