# EmbeddedGUI **Repository Path**: embeddedgui/EmbeddedGUI ## Basic Information - **Project Name**: EmbeddedGUI - **Description**: 支持FPB、抗锯齿、动画、脏矩阵的高效嵌入式GUI - **Primary Language**: C - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 14 - **Forks**: 4 - **Created**: 2024-08-30 - **Last Updated**: 2025-10-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 简介 [](https://github.com/EmbeddedGUI/EmbeddedGUI/actions/workflows/github-actions-demo.yml) [](https://embeddedgui.readthedocs.io/en/latest/?badge=latest) 文档地址:[欢迎来到EmbeddedGUI的文档](https://embeddedgui.readthedocs.io/en/latest/) 本项目主要面对RAM资源有限(<8KB),ROM资源有限(<64KB,主要看所需字体和贴图资源),CPU资源还充裕(<100MHz,不支持浮点,FPS在30左右)。需要支持触控、ViewPage等主流的UI控制行为。Framebuffer采用PFB设计,用户可以根据需要选择不同尺寸的PFB大小来平衡屏幕刷新率。 本项目提供一套基于PFB设计的GUI架构。基于面向对象的编码方式,UI参考Android UI架构,用户可以轻松定义项目所需的控件。 本项目主要参考:[GuiLite](https://gitee.com/idea4good/GuiLite)、[Arm-2D](https://github.com/ARM-software/Arm-2D)、[EasyGUI](https://github.com/MaJerle/EasyGUI)、[lvgl](https://github.com/lvgl/lvgl)和Android GUI框架。 本项目仓库路径:[EmbeddedGUI(gitee.com)](https://gitee.com/embeddedgui/EmbeddedGUI),[EmbeddedGUI(github.com)](https://github.com/EmbeddedGUI/EmbeddedGUI)。 # 产品特点 - 易于移植,全部由C代码编写,支持C++调用,无第三方依赖库。 - 基于轮询结构,可以在任何MCU环境下运行,无需OS支持。 - 支持多种显示支持,RGB8、RGB565、RGB32。 - 基于MIT协议,随便使用。 - 只需要不到4KB RAM(包含Framebuffer)和64KB CODE,针对PFB有特别优化,小PFB和大PFB性能差异不大。 - UTF-8字体支持。 - 图片透明通道支持。 - Mask支持,可以绘制圆角图片等功能。 - 动画支持,支持Android的全部动画效果。 - 抗锯齿支持,基本图形,线,圆,圆环,圆角矩阵,扇形等都支持抗锯齿。 - 脏矩阵支持,平时只绘制需要绘制的区域,不仅省功耗,同时对于特定页面,可以实现高帧率。 - 定点支持,所有代码全部用定点运算实现,避免在没有浮点运算单元的芯片上,运行太卡。 - PFB支持,只需要简单一点点RAM。 - 双缓存支持,可以充分利用SPI写入屏幕时间间隙。 - PC调试,C部署,可以在PC上运行调试,而后在嵌入式项目上运行。 - Makefile组织编译,没有乱七八糟的配置。 - 同步支持CMake编译。 # 例程演示 有点丑,但是核心机制已经演示出来了,剩下基于这个框架加自己东西就行。
![]() HelloSimple | ![]() HelloViewPageAndScroll | ![]() HelloActivity | ![]() HelloTest |
![]() HelloBasic(anim) | ![]() HelloBasic(button) | ![]() HelloBasic(button_img) | ![]() HelloBasic(image) |
![]() HelloBasic(label) | ![]() HelloBasic(linearlayout) | ![]() HelloBasic(mask) | ![]() HelloBasic(scroll) |
![]() HelloBasic(switch) | ![]() HelloBasic(viewpage) | ![]() HelloBasic(progress_bar) |
![]() |