uCGUI 中文手册:图形界面开发详解(加上代码)

uCGUI 是一个为嵌入式设备设计的图形界面库,特别适合内存和处理能力有限的微控制器(MCU)。下面是一些使用 uCGUI 开发图形界面的代码示例,涵盖常见的图形组件(如按钮、标签、进度条等),以及如何处理用户交互和界面布局设计。


目录

  1. uCGUI 简介
  2. uCGUI 安装与配置
  3. 基本图形界面组件
  4. 绘制图形与文本
  5. 用户交互:按钮与触摸屏
  6. 界面布局设计
  7. 高级功能
  8. uCGUI 开发最佳实践
  9. 参考资料

1. uCGUI 简介

uCGUI 是一个轻量级的图形用户界面库,适用于内存和处理能力受限的嵌入式系统。uCGUI 提供丰富的图形界面组件(如按钮、标签、文本框、进度条等),支持触摸屏输入和用户交互,并可在不同的嵌入式设备上运行。


2. uCGUI 安装与配置

2.1 下载与集成

你可以从 uCGUI 的官网或 GitHub 获取源代码,按照嵌入式平台的需求进行集成。将源代码和相关库文件添加到你的嵌入式项目中,进行相应的配置。

2.2 配置文件

uCGUI 需要通过配置文件来调整屏幕分辨率、颜色深度、显示控制器等参数。例如,编辑 GUIConf.h 文件中的配置项:

#define GUI_XSIZE_PHYS  240   // 屏幕宽度
#define GUI_YSIZE_PHYS  320   // 屏幕高度
#define GUI_BPP          16    // 颜色深度(16位)

这些参数根据你的硬件配置来调整。


3. 基本图形界面组件

uCGUI 提供了多种基本组件,下面展示了如何创建和使用这些组件。

3.1 按钮

按钮用于触发用户操作。创建按钮并设置其文本、颜色和事件。

#include "GUI.h"
#include "BUTTON.h"

// 创建一个按钮
void CreateButton() {
    BUTTON_Handle hButton;
    hButton = BUTTON_Create(10, 10, 100, 40);  // 创建按钮,设置位置和大小
    BUTTON_SetText(hButton, "Click Me");        // 设置按钮文本
    BUTTON_SetBkColor(hButton, GUI_LIGHTGRAY);  // 设置背景色
    BUTTON_SetTextColor(hButton, GUI_BLACK);    // 设置文本颜色
}

3.2 标签

标签用于显示静态文本。创建标签并设置字体、文本和颜色。

#include "GUI.h"

// 创建一个标签
void CreateLabel() {
    TEXT_Handle hText;
    hText = TEXT_Create(20, 60, 200, 30);       // 创建标签,设置位置和大小
    TEXT_SetText(hText, "Hello, uCGUI!");       // 设置标签文本
    TEXT_SetFont(hText, &GUI_Font32_ASCII);     // 设置字体
    TEXT_SetTextColor(hText, GUI_BLUE);         // 设置文本颜色
}

3.3 进度条

进度条用于显示任务进度。创建进度条并设置最小值、最大值和当前进度。

#include "GUI.h"

// 创建进度条
void CreateProgressBar() {
    PROGBAR_Handle hProgBar;
    hProgBar = PROGBAR_Create(10, 100, 200, 20);  // 创建进度条
    PROGBAR_SetMinMax(hProgBar, 0, 100);           // 设置进度条的最小值和最大值
    PROGBAR_SetValue(hProgBar, 50);                // 设置当前进度为50%
}

4. 绘制图形与文本

uCGUI 提供了丰富的绘图函数,可以绘制基本图形(如矩形、圆形)以及文本。

4.1 绘制矩形

#include "GUI.h"

// 绘制矩形
void DrawRectangle() {
    GUI_SetColor(GUI_RED);              // 设置颜色
    GUI_DrawRect(50, 50, 200, 100);    // 绘制矩形,设置左上角和右下角坐标
}

4.2 绘制圆形

#include "GUI.h"

// 绘制圆形
void DrawCircle() {
    GUI_SetColor(GUI_BLUE);            // 设置颜色
    GUI_DrawCircle(100, 100, 50);     // 绘制圆形,设置圆心和半径
}

4.3 绘制文本

#include "GUI.h"

// 绘制文本
void DrawText() {
    GUI_SetFont(&GUI_Font32_ASCII);    // 设置字体
    GUI_SetColor(GUI_BLACK);           // 设置文本颜色
    GUI_DispStringAt("Hello, World!", 100, 200);  // 在指定位置显示文本
}

5. 用户交互:按钮与触摸屏

uCGUI 支持用户交互,尤其是触摸屏输入。可以通过触摸事件来响应用户操作。

5.1 处理按钮点击事件

按钮点击事件可以触发特定的操作,比如弹出消息框。

#include "GUI.h"
#include "BUTTON.h"

// 按钮点击事件处理
void OnButtonClick(BUTTON_Handle hButton) {
    // 执行点击按钮后的操作
    GUI_MessageBox("Button Clicked", "Info", GUI_MESSAGEBOX_CF_OK);
}

// 创建按钮并绑定事件
void CreateButtonWithEvent() {
    BUTTON_Handle hButton;
    hButton = BUTTON_Create(10, 10, 100, 40);  // 创建按钮
    BUTTON_SetText(hButton, "Click Me");       // 设置按钮文本
    BUTTON_SetBkColor(hButton, GUI_LIGHTGRAY);

    // 绑定按钮点击事件
    BUTTON_SetCallback(hButton, OnButtonClick);
}

5.2 处理触摸屏输入

uCGUI 允许处理触摸屏输入并响应用户的点击事件。触摸事件可以用来绘制图形或更新界面。

#include "GUI.h"
#include "Touch.h"

// 处理触摸屏输入
void OnTouch() {
    int x, y;
    if (Touch_GetState() == TOUCH_STATE_PRESS) {
        Touch_GetPressPoint(&x, &y);  // 获取触摸坐标
        // 根据触摸坐标执行相关操作
        GUI_SetColor(GUI_GREEN);
        GUI_DrawCircle(x, y, 10);
    }
}

6. 界面布局设计

uCGUI 提供了简单的布局管理,可以通过手动调整组件的位置和大小来设计复杂的界面。

6.1 简单界面布局

#include "GUI.h"

// 简单界面布局
void CreateMainScreen() {
    CreateButton();   // 创建按钮
    CreateLabel();    // 创建标签
    CreateProgressBar();  // 创建进度条
}

6.2 层叠界面

通过管理多个窗口,可以创建具有层叠效果的界面。

#include "GUI.h"

// 层叠界面
void CreateMultipleWindows() {
    // 创建第一个窗口
    GUI_CreateWindow(0, 0, 240, 320);
    CreateButton();  // 在窗口中创建按钮

    // 创建第二个窗口
    GUI_CreateWindow(0, 0, 240, 320);
    CreateLabel();   // 在窗口中创建标签
}

7. 高级功能

uCGUI 支持一些高级功能,比如动画效果、定时器和多窗口管理等。

7.1 动画效果

void AnimateText() {
    for (int i = 0; i < 240; i++) {
        GUI_Clear();  // 清空屏幕
        GUI_DispStringAt("Moving Text", i, 100);  // 绘制动画效果
        GUI_Delay(10);  // 设置动画速度
    }
}

8. uCGUI 开发最佳实践

  • 优化内存使用:尽量减少使用不必要的图形组件,避免过多的动态内存分配。
  • 界面更新:使用定时器周期性更新界面,避免过度刷新导致的性能问题。
  • 事件管理:合理使用事件机制(如按钮点击、触摸屏事件)来减少系统负载。

9. 参考资料

**:uCGUI GitHub


总结

本文介绍了如何使用 uCGUI 库在嵌入式系统中开发图形用户界面。我们讨论了如何使用 uCGUI 创建常见的图形组件、处理用户交互和设计界面布局,此外还展示了如何实现动画效果和一些高级功能。通过灵活地运用 uCGUI 提供的功能,开发者可以为嵌入式设备设计出高效且易用的图形界面。