金牌会员
 
- 积分
- 1386
- 金钱
- 1386
- 注册时间
- 2012-10-23
- 在线时间
- 97 小时
|
本帖最后由 miaoguoqiang 于 2018-5-7 14:56 编辑
最近在做UI方面的,找了一些开源小型的GUI,支持彩屏的。终于找到一个简单的。
看到有人在用,我也当了一下搬运工,成功显示。
此GUI主要就是实现了窗口控件、Button控件、CheckBox控件、TextBox控件、Image控件这几个,支持触摸操作。
该GUI的官方地址:http://embeddedlightning.com/ugui/
GITHUB地址: https://github.com/achimdoebler/UGUI
传几个官网的效果图
包含两个文件 ugui.c ugui.h
只需要实现三个函数(红色部分)就可以移植了。
UG_Init(&gui,(void(*)(UG_S16,UG_S16,UG_COLOR))_HW_DrawPoint,LCD_W,LCD_H);
UG_DriverRegister(DRIVER_DRAW_LINE,_HW_DrawLine);
UG_DriverRegister(DRIVER_FILL_FRAME,_HW_FillFrame);
原型如下
UG_RESULT _HW_DrawLine( UG_S16 x1, UG_S16 y1, UG_S16 x2, UG_S16 y2, UG_COLOR c );
UG_RESULT _HW_FillFrame( UG_S16 x1, UG_S16 y1, UG_S16 x2, UG_S16 y2, UG_COLOR c );
void _HW_DrawPoint(UG_S16 x, UG_S16 y, UG_COLOR c);
里边只有触摸响应,自己加了按键响应,添加的单击函数如下
[mw_shl_code=c,true]UG_RESULT UG_Button_CLICK( UG_WINDOW* wnd, UG_U8 id)
{
UG_OBJECT* obj=NULL;
UG_BUTTON* btn=NULL;
obj = _UG_SearchObject( wnd, OBJ_TYPE_BUTTON, id );
if ( obj == NULL ) return UG_RESULT_FAIL;
btn = (UG_BUTTON*)(obj->data);
if ( obj->state & OBJ_STATE_VISIBLE )
{
obj->touch_state = OBJ_TOUCH_STATE_CHANGED|OBJ_TOUCH_STATE_CLICK_ON_OBJECT;
}
return UG_RESULT_OK;
}[/mw_shl_code]
使用举例:UG_Button_CLICK(&window_1,BTN_ID_0);
在该基础上也加入中英文汉字混合显示,由于项目简单,需要显示汉字的个数比较少,就没有用字库
自己自定义了几个汉字。
加得比较烂,就没有贴出来了。上传一个自己的中英文混合显示效果图,中文是32x32的。英文是12x20的。
|
|