面向教室大屏与触控设备的 Windows 班级作业看板。
Pancake 将时间、日期、天气、教室噪音和各科作业集中在一块适合远距离阅读的深色看板中。它使用 WinUI 3 构建,支持鼠标、触控笔与触摸操作,并为教室大屏提供默认全屏展示。
- 大屏展示:实时显示时钟、日期、天气、噪音水平与今日作业。
- 看板编辑:新增、重命名、移动、缩放和删除科目磁贴。
- 网格布局:磁贴默认吸附到 48 px 网格,也可在编辑时关闭吸附。
- 作业内容:在磁贴内直接编辑,支持加粗、斜体、下划线、文字颜色和高光,并可添加图片。
- 图片附件:图片直接显示在磁贴中,可拖动和缩放画面,并可调整裁切视窗高度。
- 手写标注:支持多种颜色、粗细和橡皮擦,笔迹完整显示在磁贴上并自动保存。
- 磁贴主题:每个科目可独立更换主题色。
- 编辑保护:进入编辑前创建快照,可完成编辑或放弃本轮修改。
- 噪音检测:通过麦克风实时估算环境音量,支持采样率和校准偏移设置。
- 天气信息:按小米天气接口文档读取当前温度和天气状态,内置 2566 个可按名称搜索的地区。
- 本地数据:布局、富文本、笔迹和全部设置自动保存到可执行文件旁的
data目录。 - 自动更新:启动时检查 GitHub Release,下载可安装资产后由用户确认启动安装。
- 显示设置:支持深色、浅色和跟随系统主题,以及全屏和窗口模式。
- 自适应布局:窄窗口下自动切换为上下排列。
程序默认以全屏展示模式启动。底部浮动工具栏提供编辑看板、设置和全屏切换入口。
编辑模式下可以:
- 拖动磁贴顶部来移动磁贴。
- 拖动四条边或四个角来调整磁贴大小。
- 直接修改科目名和作业文字,或添加图片与手写标注;图片可拖动、缩放、裁切、复位和删除。
- 使用底部按钮完成编辑,或放弃本轮全部修改。
按 Esc 会先结束当前编辑;未在编辑时按下则退出全屏。
- Windows 10 1809(版本 17763)或更高版本
- x64 设备
- .NET 8 SDK
- Visual Studio 2022(推荐),并安装“使用 .NET 的 Windows 应用 SDK”相关工作负载
- Windows App SDK Runtime 1.8 与 .NET 8 Desktop Runtime(直接运行框架依赖产物时需要)
git clone https://github.com/Edge-HH/Pancake.git
cd Pancake
dotnet restore .\Pancake.slnx
dotnet build .\Pancake.slnx -c Release -p:Platform=x64
dotnet run --project .\src\Pancake\Pancake.csproj -c Release -p:Platform=x64也可以使用 Visual Studio 打开 Pancake.slnx,选择 x64 后启动 Pancake 项目。
| 参数 | 作用 |
|---|---|
--windowed |
使用普通窗口启动,而不是默认全屏 |
--view=editor |
启动后直接进入看板编辑模式 |
--view=ink |
启动后直接进入可手写的编辑模式 |
--view=settings |
启动后直接打开设置页 |
例如:
dotnet run --project .\src\Pancake\Pancake.csproj -- --windowed --view=editor在设置页点击“选择地区”,输入地区名称搜索并从结果中选择。实现依据社区维护的 XiaomiWeather.md 及其配套地区数据库;该接口不是小米公开承诺稳定性的正式开放 API,若服务端变更可能需要同步适配。
- 麦克风数据只用于实时计算音量,不录音,也不保存音频。
- 添加图片时只记录本地文件路径和画面变换参数,不会上传或改写原图片。
- 数据默认写入程序所在目录的
data/pancake.json,移动整个程序目录即可一并迁移。 - 如果把程序放在无写入权限的目录(例如受保护的系统安装目录),自动保存会在设置页报告失败。
Pancake/
├─ src/Pancake/
│ ├─ Controls/ # 科目磁贴、拖动、缩放与手写交互
│ ├─ Models/ # 看板、作业、图片与笔迹模型
│ ├─ Services/ # 数据保存、噪音、天气、地区搜索与更新
│ ├─ Themes/ # WinUI 主题资源
│ ├─ ViewModels/ # 主看板状态与编辑快照
│ └─ MainWindow.* # 主界面与窗口交互
├─ tests/ # 交互契约检查脚本
├─ design-qa.md # 设计验收记录
└─ Pancake.slnx
运行静态交互契约检查:
powershell -NoProfile -ExecutionPolicy Bypass -File .\tests\verify-interaction-contract.ps1该脚本检查触控交互、八方向缩放、网格吸附、手写工具栏和全屏退出提示等关键实现是否存在。它不能代替真实触控设备上的手势、比例和命中区域验收。
- “导出备份包”和“导入备份包”目前是界面占位功能,尚未实际读写数据。
- 当前 GitHub 仓库必须先发布带
.exe、.msix或.msixbundle资产的 Release,自动更新才有可安装内容。 - 小米天气来自第三方整理的非正式接口文档,服务端兼容性不由本项目控制。
- 噪音数值是基于 PCM 电平和校准偏移的估算值,不等同于经过认证的声级计读数。
- 原生触屏手势和视觉比例仍需在目标教室设备上完成最终验收。
欢迎通过 Issue 报告问题或提出建议。提交代码前,请至少完成 Release 构建和交互契约检查,并说明是否在真实触控设备上验证过相关操作。
本项目采用 GNU General Public License v3.0 开源许可证。你可以在遵守 GPL-3.0 条款的前提下使用、修改和分发本项目;分发衍生作品时需以 GPL-3.0 提供对应源代码。