查看: 3699|回复: 0

[经验] 超轻量小型开源GUI、有效代码四千行左右、极易移植

[复制链接]

该用户从未签到

发表于 2021-4-24 17:23:14 | 显示全部楼层 |阅读模式
分享到:
开源小型 GUI,只需要两个文件 gui.c、gui.h

一、资源要求
估算最低硬件要求:

1.png

二、开源地址
开源GUI地址
https://github.com/achimdoebler/UGUI

三、GUI框架
GUI 框架构成:
1、窗口:可以绘制多个窗口;
2、控件:支持窗口内显示其他控件如按钮、文本框等;
3、 事件处理:支持界面和用户交互操作,事情回调,如触摸事件等;
4、 接口函数:提供给开发者友好的接口;
5、扩展:用户可以自行修改源码添加其他控件。

四、移植说明
4.1、首先需要准备工程模板,然后就可以开始移植了。

4.2、构建下面三个函数,分别是画线、填充、画点函数,画点函数是最基本的,移植 UGUI 必须建立此函数。请注意,确认调用三个函数可以在显示屏正常显示。如下图所示:

2.jpg

4.3、初始化GUI就完成移植了

3.jpg

4.4、有些单片机自带图形加速器,需要注册以下函数并使能

4.jpg
五、GUI函数介绍
所有GUI函数说明可以参考官方手册

5.1、例如建立一个窗口,下图为代码和显示效果:

5.jpg

6.jpg

注意此时只是简单的完成window1控件定义,LCD还未显示绘制窗口,要显示窗口必须在主循环或者定时中断中调用  UG_Update();

5.2、还有就是实现窗口内控件的回调点击处理函数,如下:

7.jpg

5.3、窗口控件管理
窗口控件管理:你在一个窗口中需要几个空间就要定义几个空间的相关类型变量定义,其中obj_buff[]数组用于记录你这个窗口中的空间,以数组方式管理和检索这些控件;一个窗口中可以容纳N个控件,由宏开关MAX_OBJECTS控制;

六、 如何实现触摸控制
如下代码所示,先获取触摸坐标,然后确认触摸状态为按下,调用UG_TouchUpdate更新坐标信息,然后UG_Update()里面会处理触摸信息,按下的相关控件会调用回调函数处理,例如上面描述的回调函数window_1_callback,里面有判断是哪个控件按下,然后处理对应的函数。

8.jpg



GUI移植和使用说明.pdf

1.47 MB, 下载次数: 17

回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条



手机版|小黑屋|与非网

GMT+8, 2025-1-13 20:00 , Processed in 0.116190 second(s), 16 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.