硬汉嵌入式论坛

 找回密码
 立即注册
查看: 6115|回复: 0
收起左侧

[emWin教程入门篇] 【STemWin教程】第52章 PROGBAR-进度条控件

[复制链接]

740

主题

1326

回帖

3546

积分

管理员

春暖花开

Rank: 9Rank: 9Rank: 9

积分
3546
QQ
发表于 2015-3-10 11:01:51 | 显示全部楼层 |阅读模式
特别说明:完整STemWin的1-60期教程和配套实例下载地址:链接
第52章 PROGBAR-进度条控件

    本期教程讲解STemWin支持的进度条控件。
    52. 1 进度条控件介绍
    52. 2 官方WIDGET_Multipage实例
    52. 3 使用GUIBulder建立多页控件
    52. 4 总结

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

    设置皮肤后显示效果如下:
52.2.png   


52.2 官方WIDGET_Multipage实例
    官方的这个实例很好的演示了MULTIPAGE的使用,这个例子在模拟器中的位置:
52.3.png

源码如下(程序中进行了详细的注释):
  1. ----------------------------------------------------------------------
  2. File        : WIDGET_Progbar.c
  3. Purpose     : Simple demo shows the use of the PROGBAR widget
  4. ----------------------------------------------------------------------
  5. */
  6. #include "GUI.h"
  7. #include "PROGBAR.h"
  8. #include <stddef.h>
  9. /*******************************************************************
  10. *
  11. *       static code
  12. *
  13. ********************************************************************
  14. */
  15. /*******************************************************************
  16. *
  17. *       _DemoProgBar
  18. 0 对应的是上面的进度条,
  19. 1 对应的是下面的进度条。
  20. */
  21. static void _DemoProgBar(void) {
  22.   int i;
  23.   PROGBAR_Handle ahProgBar[2];
  24.   GUI_SetBkColor(GUI_BLACK);
  25.   GUI_Clear();
  26.   GUI_SetColor(GUI_WHITE);
  27.   GUI_SetFont(&GUI_Font24_ASCII);
  28.   GUI_DispStringHCenterAt("WIDGET_Progbar - Sample", 160, 5);
  29.   GUI_SetFont(&GUI_Font8x16);
  30.   GUI_DispStringAt("Progress bar", 100,80);
  31.   /* 创建两个进度条*/
  32.   ahProgBar[0] = PROGBAR_Create(100,100,100,20, WM_CF_SHOW);
  33.   ahProgBar[1] = PROGBAR_Create( 80,150,140,10, WM_CF_SHOW);
  34.   /* 进度条使用内存设备两个进度条都使用*/
  35.   PROGBAR_EnableMemdev(ahProgBar[0]);
  36.   PROGBAR_EnableMemdev(ahProgBar[1]);
  37.   /* 设置第二个进度条的大小范围*/
  38.   PROGBAR_SetMinMax(ahProgBar[1], 0, 500);
  39.   /* 设置第一个进度条的字体*/
  40.   PROGBAR_SetFont(ahProgBar[0], &GUI_Font8x16);
  41.   GUI_Delay(500);
  42.   while(1) {
  43.   /* 设置进度条的字体*/
  44.      PROGBAR_SetFont(ahProgBar[0], &GUI_Font8x16);
  45.     if (LCD_GetDevCap(LCD_DEVCAP_BITSPERPIXEL) <= 4) {
  46.    /* 0代表进度条使用的颜色,代表没有进度到的颜色*/
  47.       PROGBAR_SetBarColor(ahProgBar[0], 0, GUI_DARKGRAY);
  48.       PROGBAR_SetBarColor(ahProgBar[0], 1, GUI_LIGHTGRAY);
  49.     } else {
  50.       PROGBAR_SetBarColor(ahProgBar[0], 0, GUI_GREEN);
  51.       PROGBAR_SetBarColor(ahProgBar[0], 1, GUI_RED);
  52.     }
  53.     /* 设置文字对齐方式*/
  54.     PROGBAR_SetTextAlign(ahProgBar[0], GUI_TA_HCENTER);
  55. /* 要显示的文字*/
  56.     PROGBAR_SetText(ahProgBar[0], NULL);
  57.     /* 显示的进度*/
  58.     for (i=0; i<=100; i++) {
  59.       PROGBAR_SetValue(ahProgBar[0], i);
  60.       PROGBAR_SetValue(ahProgBar[1], i);
  61.       GUI_Delay(5);
  62.     }
  63.     /* 设置进度条要显示的文字*/
  64.     PROGBAR_SetText(ahProgBar[0], "Tank empty");
  65.     /* 动态显示数值*/
  66.     for (; i>=0; i--) {
  67.       PROGBAR_SetValue(ahProgBar[0], i);
  68.       PROGBAR_SetValue(ahProgBar[1], 200-i);
  69.       GUI_Delay(5);
  70.     }
  71.     /* 设置进度条上面显示的文本*/
  72. /* 动态显示数值效果一*/
  73. PROGBAR_SetText(ahProgBar[0], "Any text...");
  74.     PROGBAR_SetTextAlign(ahProgBar[0], GUI_TA_LEFT);
  75. for (; i<=100; i++) {
  76.       PROGBAR_SetValue(ahProgBar[0], i);
  77.       PROGBAR_SetValue(ahProgBar[1], 200+i);
  78.       GUI_Delay(5);
  79.     }
  80. /* 动态显示数值效果二*/
  81.     PROGBAR_SetTextAlign(ahProgBar[0], GUI_TA_RIGHT);
  82. for (; i>=0; i--) {
  83.       PROGBAR_SetValue(ahProgBar[0], i);
  84.       PROGBAR_SetValue(ahProgBar[1], 400-i);
  85.       GUI_Delay(5);
  86.     }
  87. /* 动态显示数值效果三*/
  88.     PROGBAR_SetFont(ahProgBar[0], &GUI_FontComic18B_1);
  89.     PROGBAR_SetText(ahProgBar[0], "Any font...");
  90. for (; i<=100; i++) {
  91.       PROGBAR_SetValue(ahProgBar[0], i);
  92.       PROGBAR_SetValue(ahProgBar[1], 400+i);
  93.       GUI_Delay(5);
  94.     }
  95.     GUI_Delay(500);
  96.   }
  97. }
  98. /*******************************************************************
  99. *
  100. *       MainTask
  101. *
  102. *       Demonstrates the use of the PROGBAR widget
  103. *
  104. ********************************************************************
  105. */
  106. void MainTask(void) {
  107.   GUI_Init();
  108.   while (1) {
  109.     _DemoProgBar();
  110.   }
  111. }
复制代码
实际显示效果如下:
52.4.png


52.3 使用uCGUIBulder建立进度条控件
    用uCGUIBulder4.0建立如下界面(480*272分辨率):
52.5.png

    设置进度条控件的如下三个地方:
52.6.png

    将生成的代码直接复制到模拟器或者开发板上面运行,实际显示效果如下(生成的代码在本期教程配套的例子中):
52.7.png

    设置皮肤色的话,显示效果如下:
52.8.png


52.4 总结
    本期教程主要是跟大家讲解了进度条控件的基础知识。希望大家可以把本期教程中讲的这两个例子跑跑,然后自己设计一个相关的例子进行试验学习。教程中只是使用了部分的进度条控件API,其它的API大家都可以试试。
努力打造安富莱高质量微信公众号:点击扫描图片关注
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-16 21:49 , Processed in 0.151107 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表