|
复选框控件使用说明
一、控件概述本复选框控件是一个适用于单片机图形界面的UI组件,基于单片机 + RA8889/RA6809 + TFT显示屏 + GT911触摸屏开发。控件提供了丰富的功能和自定义选项,使用简单方便,易于移植。 主要特点: - 支持可配置的尺寸、位置和颜色
- 支持文本标签显示
- 支持启用/禁用状态切换
- 支持显示/隐藏控制
- 支持回调函数,可响应状态变化
- 支持触摸事件处理
硬件平台: - 主控芯片(MCU):51/ARM均可(测试时使用STC8H8K64U单片机)
- 图形处理芯片(Micro GPU):RA8889/RA6809
- 显示屏:TFT(演示时采用分辨率1024x600)
- 触摸屏:GT911电容触摸屏
- 通信接口:SPI-4(亦可采用8080/SPI-3/I2C接口)
二、移植指南
1. 文件结构
- 滑动条控件/
- ├── main.c // 主程序示例文件
- ├── widget/ // 控件相关文件
- │ ├── checkbox.c // 控件头文件,包含接口声明和配置定义
- │ └── checkbox.h // 控件头文件
- ├── touch/ // 触摸屏相关文件
- │ ├── GT911.c // GT911触摸驱动实现
- │ └── GT911.h // GT911触摸驱动头文件
- ├── RA8889_01_Kernel/ // RA8889/RA6809图形处理芯片相关文件
- │ ├── RA8889_51.c // RA8889基础驱动
- │ ├── RA8889_51.h // RA8889基础头文件
- │ ├── RA8889_API_51.c // RA8889 API实现
- │ ├── RA8889_API_51.h // RA8889 API头文件
- │ ├── RA8889_MCU_IF.c // RA8889与MCU接口实现
- │ ├── RA8889_MCU_IF.h // RA8889与MCU接口头文件
- │ ├── UserDef.h // 用户定义头文件
- │ ├── delay.c // 延时函数实现
- │ └── delay.h // 延时函数头文件
- └── 其他项目文件...
复制代码
2. 依赖项本控件依赖于以下组件: - RA8889/RA6809驱动(提供绘图和文本处理等功能)
3. 移植步骤- 将checkbox.h和checkbox.c文件添加到您的项目中
- 在需要使用控件的文件中包含头文件:#include "checkbox.h"
- 确保您的项目中已经包含了必要的依赖项
- 根据您的硬件配置,可能需要修改以下定义(在checkbox.h中):
- 颜色定义:CHECKBOX_BG_COLOR、CHECKBOX_BORDER_NORMAL等
- 对勾线条粗细:TICK_LINE_THICKNESS
- 间距设置:PADDING
- 最大控件数量:MAX_CHECKBOX
- 标签文本长度:MAX_CHECKBOX_LABEL_LENGTH
- 字体宽高:CHECKBOX_FONT_WIDTH、CHECKBOX_FONT_HEIGHT
三、API说明
初始化函数
- void Checkbox_Init(void);
复制代码
- 功能:初始化复选框控件系统
- 参数:无
- 返回值:无
- 说明:使用其他API前必须先调用此函数
添加复选框
- unsigned char Checkbox_Add(unsigned short x, unsigned short y,
- unsigned short width, unsigned short height,
- unsigned char changed_status,
- unsigned long checkbox_color_selected,
- unsigned long display_color)
复制代码
- 功能:添加一个新的复选框
- 参数:
- x:复选框X坐标
- y:复选框Y坐标
- width:复选框宽度
- height:复选框高度
- changed_status:初始状态,0为未选中,1为选中
- checkbox_color_selected:选中状态的填充颜色
- display_color:禁用状态的颜色
- 返回值:新创建的复选框ID
设置标签
- void Checkbox_SetLabel(unsigned char id, const char* label, unsigned long label_color);
复制代码- 功能:设置复选框的文本标签
- 参数:
- id:复选框ID
- label:标签文本
- label_color:标签文本颜色
- 返回值:无
启用/禁用控制
- void Checkbox_Enable(unsigned char id, unsigned char enable);
复制代码- 功能:设置复选框是否启用
- 参数:
- id:复选框ID
- enable:是否启用,0为禁用,1为启用
- 返回值:无
显示/隐藏控制
- void Checkbox_Visible(unsigned char id, unsigned char visible);
复制代码- 功能:设置复选框是否可见
- 参数:
- id:复选框ID
- visible:是否可见,0为隐藏,1为显示
- 返回值:无
绘制复选框
- void Checkbox_Draw(unsigned char id);
复制代码
触摸处理
- void Checkbox_Process(unsigned char id);
复制代码- 功能:处理复选框的状态变化
- 参数:
- 返回值:无
- 说明:将切换复选框状态并调用回调函数
- unsigned char Checkbox_HandleTouch(unsigned int touch_x, unsigned int touch_y);
复制代码- 功能:处理触摸事件,检查是否触发了某个复选框
- 参数:
- touch_x:触摸X坐标
- touch_y:触摸Y坐标
- 返回值:触发的复选框ID,如果没有触发则返回0
回调函数设置
- void Checkbox_SetCallback(unsigned char id, CHECKBOX_CALLBACK onChange);
复制代码- 功能:设置复选框状态改变时的回调函数
- 参数:
- id:复选框ID
- onChange:回调函数指针,原型为void (*CHECKBOX_CALLBACK)(void* checkbox, unsigned char status)
- 返回值:无
四、使用示例以下是一个简单的使用示例: - #include "checkbox.h"
- // 定义复选框ID
- unsigned char checkbox_id1;
- // 回调函数
- void Checkbox_Changed(void* checkbox, unsigned char status)
- {
- CheckboxTypeDef* pCheckbox = (CheckboxTypeDef*)checkbox;
- // 执行状态变化后的操作
- if(status == 1) {
- // 选中状态的处理
- } else {
- // 未选中状态的处理
- }
- }
- void main()
- {
- // 其他初始化代码...
-
- // 初始化复选框控件
- Checkbox_Init();
-
- // 添加一个复选框
- checkbox_id1 = Checkbox_Add(300, 200, 28, 28, FALSE, 0x0000FF, 0x808080);
-
- // 设置标签
- Checkbox_SetLabel(checkbox_id1, "启用功能", 0x000000);
-
- // 启用复选框
- Checkbox_Enable(checkbox_id1, TRUE);
-
- // 显示复选框
- Checkbox_Visible(checkbox_id1, TRUE);
-
- // 设置回调函数
- Checkbox_SetCallback(checkbox_id1, Checkbox_Changed);
-
- // 绘制所有复选框
- Checkbox_DrawAll();
-
- // 主循环中的触摸处理
- while(1) {
- // 获取触摸坐标...
-
- // 检查是否触发了复选框
- unsigned char triggered = Checkbox_HandleTouch(touch_x, touch_y);
-
- // 如果触发了复选框
- if(triggered > 0) {
- // 处理复选框状态变化
- Checkbox_Process(triggered);
- }
- }
- }
复制代码
五、注意事项- 最多支持创建MAX_CHECKBOX个复选框(默认为10个,根据需求进行修改)
- 标签文本长度不应超过MAX_CHECKBOX_LABEL_LENGTH(默认为50个英文字符)
- 使用回调函数时需要注意函数原型匹配:void (*CHECKBOX_CALLBACK)(void* checkbox, unsigned char changed_status)
- 在禁用状态下,复选框仍然可以显示,但不会响应触摸事件
六、源码下载
请至论坛菜单:组件与控件中心。
七、视频介绍
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|