# YMGUI
**Repository Path**: hegen/ymgui
## Basic Information
- **Project Name**: YMGUI
- **Description**: 跨平台、mini开源gui框架,可移植win,linux,stm32,裸机就能跑,YMGUI 是一个面向嵌入式/裸机优先的跨平台 GUI 库,使用 C99 + GNU 扩展编写。它的核心定位是:软件光栅化 + 保留模式 + 分块刷新。你可以在 Linux 桌面(SDL)上开发和调试界面,然后无缝部署到裸机 MCU + LCD 上——两者共用同一套渲染代码,只需更换一个显示驱动回调。
- **Primary Language**: C
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 3
- **Created**: 2026-10-01
- **Last Updated**: 2026-10-01
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# YMGUI
[](LICENSE)
面向**嵌入式/裸机优先**的跨平台 GUI 库,C99 + GNU 扩展。软件光栅化 + 保留模式 + 分块刷新,桌面(Linux/SDL)开发、裸机(MCU + LCD)部署,两者共用同一套渲染代码,只换一个显示驱动回调。Windows、Android 和真实硬件的平台逻辑集中在 `SDL_LCD/` 或应用桥接层,不进入控件核心。
当前能力、配置和验证基线见 [当前状态](docs/当前状态.md);跨平台显示、输入与构建实践见 [跨平台移植](docs/CROSS_PLATFORM_PORTING.md)。
## 状态
27 个具名控件 + base 容器 · 5 类图元 · 36 个 CTest · 49 个独立 demo · 15 个完整应用。
(Button/Label/Checkbox/Switch/Slider/Bar/Image/Arc/Spinner/Meter/TextInput/TextView/EditView/List/Chart/Dropdown/Table/Tabview/TreeView/Grid/Canvas/ColorPicker/Roller/BarChart/MsgBox/FileDialog/Joystick + base 容器)
抗锯齿(4bpp 灰度字体 + Wu 斜线 + 距离场圆弧,`YMGUI_ANTIALIAS` 可裁)、中文/CJK(UTF-8 回退链 + 稀疏字模 + 外部 flash 回调,`YMGUI_FONT_CJK` 可裁)、状态/数据绑定和 context 级 UI 属性动画均已落地。
## 效果预览
每个 demo 展示一张代表性运行截图。控件及常规应用截图由 `./capture_shots.sh` 一键生成(SDL dummy 驱动无头渲染,产物落 `docs/shots/`);视频剪辑器展示导入 `卖瓜.mp4` 后的时间线,音乐工坊展示当前版本的鼓机与多轨编排工作区。
### 完整应用(`project_Demo/`)
用真实小应用验证"库够不够用",每个都催生或压榨了一批控件。
| | |
|---|---|
| **闹钟** 三滚轮设时 + 到点弹阻塞模态(MsgBox)
| **实时监控面板** Tabview/Meter/Arc/Chart + 数据绑定
|
| **电子表格** Grid + 公式引擎(SUM/AVG,定点)
| **文件管理器** TreeView 懒加载 + 预览 + 沙箱增删改
|
| **图层画板** Canvas + ColorPicker + 图层融合/工具
| **音乐播放器** BarChart 频谱 + Roller 歌词 + ffmpeg 解码
|
| **多行编辑器** EditView 选区/剪贴板/撤销/查找替换 + 菜单栏
| **视频播放器** Image 缩放模式 + 流式解码 + A/V 同步
|
| **上下文手势实验室** 右键/触摸长按菜单 + 捕获式卡片拖动
| **插件管理器** 动态加载/卸载 + 插件自建 UI + 生命周期日志
|
| **Pocket Tasks** 320×480 竖屏任务应用,完成进度与底部详情面板动效
| **Yaomi Phone** 320×480 中文手机界面:三页桌面、16 个模块化应用、统一输入法、双列后台与开关机
|
**视频剪辑器** · `卖瓜.mp4` 已加入 V1 轨道,显示项目预览、片段属性和入出点缩略图。
**音乐工坊** · 中文多轨编排、九声部采样鼓机、钢琴卷帘、基础混音与 WAV 导出,附可编辑曲库。下图为“午后律动”工程的实际运行界面,详见 [使用说明](project_Demo/music_studio/README.md)。
### 控件演示(`Demo/`)
![]() button |
![]() form(复选/开关/滑块) |
![]() list |
![]() chart |
![]() dropdown(浮层展开) |
![]() table |
![]() tabview |
![]() treeview |
![]() msgbox(模态弹窗) |
![]() roller |
![]() barchart |
![]() dashboard(表盘簇) |
![]() canvas |
![]() colorpicker |
![]() image(缩放模式) |
![]() draw(图元) |
![]() textinput |
![]() textview |
![]() editview |
![]() layout(Stack/Align) |
![]() bind(数据绑定) |
![]() font_cjk |
![]() font_gb2312 |
![]() flush_band(分块刷新) |
![]() anim(属性补间) |
![]() anim_drawer(抽屉导航) |
![]() anim_dialog(模态弹窗) |
![]() anim_cards(错峰卡片) |
![]() anim_progress(进度反馈) |
![]() anim_canvas(播放头画布) |
![]() anim_tabs(页签切换) |
![]() anim_accordion(折叠面板) |
![]() anim_toast(通知入场) |
![]() anim_scroll(滚动视口) |
![]() anim_theme(主题过渡) |
|
![]() anim_focus(焦点跟随) |
![]() anim_validation(表单校验) |
![]() anim_batch(批量操作栏) |
|
![]() anim_list_ops(列表增删重排) |
![]() anim_drag_snap(拖拽吸附) |
![]() anim_submit(提交反馈) |
![]() anim_loading(加载切换) |
![]() anim_detail(侧边详情) |
![]() anim_pull_refresh(下拉刷新) |
![]() anim_carousel(轮播吸附) |