UI系统
一、数据结构抽象
-
按钮的名字
-
按钮的区域
3.按钮的绘制
4.按钮的事件
cpp
typedef struct Button {
char *name;
int status;
Region tRegion;
int (*OnDraw)(struct Button *ptButton);
int (*OnPressed)(struct Button *ptButton,PDispBuff ptDispBuff,PInputEvent ptInputEvent);
}Button, *PButton;
二、按键编程
对按键进行初始化,实现抽象出来的结构体。
2.1 实现OnDraw()
需要先实现:
1. 绘制底色
cpp
void DrawRegion(PRegion ptRegion, unsigned int dwcolor)
2. 居中绘制文字
cpp
void DrawTextInButtonCenter(char *name, PRegion ptRegion, unsigned int dwColor)
①确定每一个字符的大小
② 确定第一个字符的起点
然后就可以将绘制出来的按钮刷到LCD上。
cpp
int FlushDisplayRegion(PRegion ptRegion, PDispBuff ptDispBuff)
2.2 实现OnPressed()
通过标志位status判断按键当前的状态,从而选颜色的显示。
页面系统
一、数据结构抽象
cpp
typedef struct PageAction {
char *name;
void (*Run)(void *pParams);
struct PageAction *ptNext;
}PageAction,*PPageAction;
二、页面管理器
页面管理器用来管理页面,只需要实现2个函数:
1.PageRegister:把多个页面注册进链表
2.Page(name):取出某个页面