为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" />

时间: 2024-12-25 07:14:22

为OLED屏添加GUI支持6:进度条控件的相关文章

为OLED屏增加GUI支持5:图片控件

本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN10 开发环境:MDK5.13 MCU:STM32F103 说明: 本文定义了图片控件.OLED屏是单色屏,所以本图片控件支持的是单色BMP图像. 将普通图像转换为单色图片可以用工具BmpCvt.exe.将转换后的BMP图像转换为hex文件,可以用Bin2C.exe.这两个工具都是emwin自带工具. 源代码: 转换后的hex文件再整理成如下的示例格式: battery0.c /*

为OLED屏添加GUI支持3:字库

本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN10 开发环境:MDK5.13 MCU:STM32F103 说明: GUI中有字库方能显示汉字.英文,数字等.英文数字等ASCII码128个字符保存显示easy.但汉字数万,假设不用字库芯片,用软件保存.则flash明显不够.所以仅仅加入须要显示的汉字. 本GUI用的显示方法,能够easy的显示不同字体,不同字号的汉字和ASCII码. 源码及步骤: 1.用工具FontCvt.exe

为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_PRO

在DevExpress GridControl中添加进度条控件 z

首先可以使用 DevExpress GridControl 自带的进度条控件. 但是我要用一个方法来设置所有的单元格进度,而不是每个单元格都要设置一遍,同时我想要根据进度值不同,进度条显示不同的颜色. 那么就要自己手动的编写代码来完成了. 1 .绘制一个单元格进度条形状,当进度小于50%时显示为红色. public void DrawProgressBar(DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e) { string

Photoshop和WPF双剑配合,打造炫酷个性的进度条控件

现在如果想打造一款专业的App,UI的设计和操作的简便性相当重要.UI设计可以借助Photoshop或者AI等设计工具,之前了解到WPF设计工具Expression Blend可以直接导入PSD文件或者AI设计文件(当然不是全部特征支持),最近研究了一下,也废了一番周折,好在最后实现了预期的效果.下面将step by step用示例说明如何先用PS构建一个矢量图形模板,然后用Expression Blend导入PSD文件,并获取PATH的Data值,为打造一款炫酷的个性进度条控件构建美观UI.

HslControls组件库 工业控件库 曲线控件 时间控件 管道控件 温度计控件 阀门控件 传送带控件 进度条控件 电池控件 数码管控件等等

本篇博客主要对 HslControls 组件做一个大概的总览介绍,更详细的内容可以参照页面里的子链接,还有github上的源代码,然后进行相关的学习,和使用. Prepare 先从nuget下载到组件,然后就可以使用组件里的各种组件信息了. 在Visual Studio 中的NuGet管理器中可以下载安装,也可以直接在NuGet控制台输入下面的指令安装: Install-Package HslControls NuGet安装教程  http://www.cnblogs.com/dathlin/p

用 CALayer 定制下载进度条控件

// // RPProgressView.h // CALayer定制下载进度条控件 // // Created by RinpeChen on 16/1/2. // Copyright © 2016年 rinpe. All rights reserved. // #import <UIKit/UIKit.h> @interface RPProgressView : UIView @property (nonatomic, assign) CGFloat progressValue; // 进

iOS:进度条控件的详细使用

进度条控件:UIProcessView:UIView 功能:顾名思义,用来显示下载进度或者传输数据进度. 属性: @property(nonatomic) UIProgressViewStyle progressViewStyle; //风格类型 @property(nonatomic) float progress;                                   //当前进度 @property(nonatomic, retain) UIColor* progressTi

MFC进度条控件(Progress)

进度条控件的应用 进度条的主要方法和事件 SetRange方法:该方法用于设置进度条范围. void SetRange(short  nLower,short  nUpper);进度的下界和上界范围. GetPos方法:用于获取进度条当前位置. SetStep方法:用于设置进度条每步的增量. StepIt方法:用于每一步的增量来增加进度条的当前位置. 详细的介绍见MFC++程序开发参考大全(P196) 1.创建一个基于对话框的应用程序. 2.向对话框中添加一个进度条控件.一个按钮控件.3个静态文