# minipaint **Repository Path**: bitpg/minipaint ## Basic Information - **Project Name**: minipaint - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-06-15 - **Last Updated**: 2026-06-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MiniPaint 一款模仿 Windows 10 画图 (mspaint) 的简易绘图软件,使用 C 语言 + raylib 库开发。 ## 功能特性 ### 绘图工具 - **画笔** — 圆形笔触,线条自动插值,自定义铅笔光标 - **直线** — 线宽可调,弹出面板选择「纯直线」或「直线箭头」模式 - **形状** — 矩形、椭圆、圆角矩形、多边形、曲线,支持空心/实心/边框+填充三种模式 - **填充** — 扫描线泛洪填充,容差 0~100 可调 - **橡皮擦** — 方块预览,白色圆形笔触 - **文字** — 自动换行,完整键盘输入,CJK 字体支持,编辑框拖拽/缩放 - **选择** — 矩形选区,移动/复制(Ctrl+拖拽)/删除/裁剪 - **颜色拾取器** — 放大镜效果,取色预览 - **表格** — 对话框设置行数/列数,点击画布放置,支持线宽选择(1~4px) ### 文件操作 - **打开** — PNG / JPEG / BMP 格式 - **保存** — PNG / JPEG / BMP 格式可选 - **自动保存** — 每 3 分钟自动保存,绘图操作中等松手后保存 - **剪贴板** — Ctrl+C 复制选区,Ctrl+V 粘贴截图 ### 视图操作 - **平移** — 鼠标中键拖拽 - **滚动** — 滚轮垂直 / Shift+滚轮水平 - **缩放** — Ctrl+滚轮 (0.1×~32×) - **滚动条** — 垂直+水平,动态显示/隐藏 ### 撤销/重做 - 最多 50 步全量快照 - 所有工具均支持 ## 构建 ### 环境要求 | 工具 | 版本 | |------|------| | GCC (MinGW) | 15.2.0+ | | CMake | 3.16+ | | raylib | 5.5 | ### 构建步骤 ```bash mkdir build cd build cmake .. cmake --build . ``` 生成的可执行文件位于 `build/MiniPaint.exe`。 ## 快捷键 | 快捷键 | 功能 | |--------|------| | Ctrl+N | 新建画布 | | Ctrl+O | 打开文件 | | Ctrl+S | 保存 | | Ctrl+Shift+S | 另存为 | | Ctrl+Z | 撤销 | | Ctrl+Y | 重做 | | Ctrl+C | 复制选区 | | Ctrl+V | 粘贴截图/文本 | | Delete | 删除选区/字符 | | Esc | 取消当前操作 | | Ctrl++ | 放大 | | Ctrl+- | 缩小 | | Ctrl+0 / Ctrl+Q | 实际大小(100%) | | 鼠标滚轮 | 垂直滚动 | | Shift+滚轮 | 水平滚动 | | Ctrl+滚轮 | 缩放 | | 鼠标中键拖拽 | 平移 | ## 项目结构 ``` MiniPaint ├── CMakeLists.txt ├── readme.md ├── spec.md # 需求规格说明书 ├── plan.md # 执行规划文档 ├── tasks.md # 任务清单 ├── raygui.h # raygui 库 └── src/ ├── main.c # 程序入口,主循环 ├── app.h / app.c # 应用状态管理 ├── canvas.h / canvas.c # 画布模块(分块渲染) ├── tools.h / tools.c # 绘图工具 ├── ui.h / ui.c # UI 模块 ├── history.h / history.c # 撤销/重做 ├── file_io.h / file_io.c # 文件读写 ├── clipboard.h / clipboard.c # 剪贴板操作 └── win_dialog.h / win_dialog.c # 原生对话框 ``` ### 核心架构 - **分块渲染**:画布分为 512×512 的 tile,GPU 纹理懒加载,仅创建和上传可视区域 - **脏区域追踪**:绘图时只重新上传被修改的 tile,减少每帧开销 - **历史快照**:全量 ImageCopy,大画布自动限制条目数以控制内存 ## 技术栈 | 项目 | 选型 | |------|------| | 语言 | C11 | | 图形库 | raylib 5.5 | | UI 库 | raygui (内置) | | 构建工具 | CMake + MinGW | | 目标平台 | Windows 10/11 x64 |