emwin的进度条控件

1 进度条控件介绍
进度条通常在应用程序中用于实现虚拟化,下面的截图是设置了皮肤和没有设置皮肤时的显示效果:
没有皮肤
这里写图片描述

有皮肤
这里写图片描述

2 程序代码:
(程序是参考安福莱《stm32-V5开发板STemwin教程》)



#include "stm32f10x.h"
#include "bsp_led.h"
#include "GUI.h"
#include "diskio.h"
#include "bsp_touch.h"
#include "bsp_SysTick.h"
#include "bsp_usart1.h"
#include "bsp_fsmc_sram.h"
#include "PROGBAR.h"

extern void Touch_MainTask(void);
extern void Fatfs_MainTask(void);
static void _DemoProgBar();

int main(void)
{   


    Touch_Init();


    SysTick_Init();


    FSMC_SRAM_Init();


//  disk_initialize(0);  


  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE);


    GUI_Init();


    USART1_Config();

    DEBUG("\r\n wildfire ISO board emWin test \r\n");

    GUI_Delay (20);

//  #if 0

//  Touch_MainTask();
//  #else
//  Fatfs_MainTask();
//  #endif
    while(1)
        {
        _DemoProgBar();

    }
}
//显示进度条
static void _DemoProgBar()
{
    int i;
    PROGBAR_Handle ahProgBar[2];
  GUI_SetBkColor(GUI_BLACK);
    /*设置进度条的皮肤*/
    //PROGBAR_SetDefaultSkin(PROGBAR_SKIN_FLEX);
    GUI_Clear();
    GUI_SetColor(GUI_WHITE);
    GUI_SetFont(&GUI_Font24_ASCII);
  GUI_DispStringAt("Progress",100,80);

  /*创建两个进度条*/
  ahProgBar[0] = PROGBAR_Create(100,100,100,20, WM_CF_SHOW);
    //ahProgBar[0]=PROGBAR_CreateEx(100,100,100,20, 0,PROGBAR_CF_HORIZONTAL,WM_CF_SHOW,15);
    ahProgBar[1] = PROGBAR_Create( 80,150,140,10, WM_CF_SHOW);

  /*使用内存设备,两个进度条都使用*/
    /*PROGBAR_EnableMemdev()函数是一个宏定义*/
    PROGBAR_EnableMemdev(ahProgBar[0]);
    PROGBAR_EnableMemdev(ahProgBar[1]);

  /*设置第二个进度条的大小范围*/
    PROGBAR_SetMinMax(ahProgBar[1], 0, 500);

    PROGBAR_SetFont(ahProgBar[0], &GUI_Font8x16);
    GUI_Delay(500);

    while(1)
    {

  PROGBAR_SetFont(ahProgBar[0], &GUI_Font8x16);

  if(LCD_GetDevCap(LCD_DEVCAP_BITSPERPIXEL) <= 4)
    {
        /*设置进度条的颜色*/
    PROGBAR_SetBarColor(ahProgBar[0], 0, GUI_DARKGRAY);
        PROGBAR_SetBarColor(ahProgBar[0], 1, GUI_LIGHTGRAY);
    } 
    else
    {
        PROGBAR_SetBarColor(ahProgBar[0], 0, GUI_GREEN);
        PROGBAR_SetBarColor(ahProgBar[0], 1, GUI_RED);
  }
    /*设置文字的对其方式*/
    PROGBAR_SetTextAlign(ahProgBar[0], GUI_TA_HCENTER);
  /*设置要显示的文字*/
    PROGBAR_SetText(ahProgBar[0], NULL);

    /*显示进度*/
    for(i=0; i<=100; i++) 
    {
        PROGBAR_SetValue(ahProgBar[0], i);
        PROGBAR_SetValue(ahProgBar[1], i);
        GUI_Delay(5);
    }

    PROGBAR_SetText(ahProgBar[0], "Tank empty");

  /*动态显示数值*/
    for (;i>=0; i--) 
    {
        PROGBAR_SetValue(ahProgBar[0], i);
        PROGBAR_SetValue(ahProgBar[1], 200-i);
        GUI_Delay(5);
    }


    PROGBAR_SetText(ahProgBar[0],"Any text...");
    /*设置文本对其方式*/
    PROGBAR_SetTextAlign(ahProgBar[0], GUI_TA_LEFT);

    for (;i<=100; i++) 
    {
        PROGBAR_SetValue(ahProgBar[0], i);
        PROGBAR_SetValue(ahProgBar[1], 200+i);
        GUI_Delay(5);
    }

    PROGBAR_SetTextAlign(ahProgBar[0], GUI_TA_RIGHT);

    for (;i>=0; i--) 
    {
        PROGBAR_SetValue(ahProgBar[0], i);
        PROGBAR_SetValue(ahProgBar[1], 400-i);
        GUI_Delay(5);
    }


    PROGBAR_SetFont(ahProgBar[0], &GUI_FontComic18B_1);
    PROGBAR_SetText(ahProgBar[0], "Any font...");

    for (;i<=100; i++) 
    {
        PROGBAR_SetValue(ahProgBar[0], i);
        PROGBAR_SetValue(ahProgBar[1], 400+i);
        GUI_Delay(5);
    }
        GUI_Delay(500);
    }  //end while

}
/*********************************************END OF FILE**********************/

3 存在的问题
(1)PROGBAR_Create()设置进度条的方式在emwin5.12手册中已经被PROGBAR_CreateEx()函数取代,但是我在本程序中使用PROGBAR_CreateEx()函数创建进度条并没有成功。
(2)进度条换肤函数

PROGBAR_SetDefaultSkin(PROGBAR_SKIN_FLEX);

在程序中我已经注释掉,因为我用这个函数换肤后的效果并不美观。

以上这两个问题还有待进一步研究。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值