# ShotInk **Repository Path**: clear_wind_and_rain/ShotInk ## Basic Information - **Project Name**: ShotInk - **Description**: Windows screenshot, annotation, desktop pinning and scrolling capture tool - **Primary Language**: C# - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-24 - **Last Updated**: 2026-10-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ShotInk 轻量 Windows 截图工具,支持区域截图、绘图标注、滚动长截图与桌面贴图。下载即可运行,截图保存在本机。 ## 下载 前往 [Releases](https://github.com/Tombears/ShotInk/releases/latest) 下载 [ShotInk-portable.zip](https://github.com/Tombears/ShotInk/releases/latest/download/ShotInk-portable.zip),完整解压到一个文件夹后运行其中的 `ShotInk.exe`,保留同目录的 `ocr` 文件夹。后续版本统一提供 ZIP 包。 支持 Windows 10 / 11,需要 .NET Framework 4.8。 ## 功能 - **区域截图**:`F1` 拖选区域,松开鼠标后保持屏幕选区,并在选区下方显示浮动图标工具栏。支持拖动选区、八个手柄调整大小、跨显示器选区和像素尺寸提示。 - **浮动工具栏**:矩形 / 椭圆、箭头 / 直线、画笔、荧光笔、马赛克、文字、橡皮擦、撤销、重做、取消、贴图、保存、复制。单击工具立即启用默认模式,并展开对应选项;重复单击保持工具启用。 - **独立工具设置**:各工具分别记住颜色和线宽,文字字号、马赛克颗粒、模糊强度与画笔大小、橡皮擦大小互不影响;切换工具、打开新截图和重启后继续保留。 - **文字标注**:选择文字工具后直接在图片上输入,支持中文、多行、独立字号、颜色、粗体和斜体;选中文字后可继续调整样式。拖动边框移动,拖动四角等比缩放,拖动顶部圆点旋转(按住 Shift 按 15° 对齐);双击或 F2 再次编辑。输入时 Enter 换行、Ctrl+Enter 完成、Esc 取消本次编辑,Ctrl+C 复制输入框中的文字;点击空白处可继续添加文字。移动、缩放、旋转及文字修改均可撤销、重做,导出只保留文字。 - **马赛克与橡皮擦**:均支持「画笔 / 选框」,默认使用画笔。马赛克像素块根据原图颜色取均值,自适应背景明暗并保留彩色内容;也可选择高斯模糊,分别设置颗粒大小、模糊强度,并保留独立的画笔直径。方块连续覆盖,缩放时不出现白色细缝。选框马赛克带虚线编辑框,可继续移动、缩放和切换效果,编辑框不进入导出;橡皮擦按涂抹或框选范围恢复原图。每次操作支持撤销和重做。 - **点按线条**:在线条选项中选择「直线」或「箭头」,第一次单击确定起点,后续单击添加折点;右键、双击或 Enter 完成,Backspace 退回一个节点,Esc 取消当前线条。两点组成直线,多点组成折线,箭头只显示在最后一段末端。整条线可一次撤销和重做。 - **图片选字**:点击橡皮擦右侧的「方框+文」,识别完成后自动全选,以连续荧光色带高亮,不再逐字显示小格;可继续拖选文字或跨行选择表格的一列。支持中英文、数字和标点,单击选择英文词、双击选择整行、`Ctrl+A` 全选、`Ctrl+C` 复制选中文字。高亮不进入导出图片,点击绘图工具或 `Esc` 返回标注。 - **滑条手柄**:椭圆形手柄带渐变高光和阴影,支持拖动、点击轨道、方向键及滚轮调整。 - **标注导出**:直接在选区上绘制,`Enter` / 双击未选择绘图工具的选区 / `Ctrl+C` 复制并结束,`Ctrl+S` 保存 PNG;工具栏、边框和手柄均不进入导出图片。长图在固定选框内滚动浏览并导出整图,历史图片使用可缩放编辑器。 - **桌面贴图**:`F3` 将剪贴板图片置顶。拖动位置,滚轮缩放,右键切换半透明,双击或 `Esc` 关闭。 - **滚动长截图**:先截图框选,再点文字识别右侧的长截图图标;直接使用当前选区。手动滚动原窗口,后台检测变化并异步拼接;采集时仅显示「完成」。结束后恢复完整工具栏,长图以原像素在固定框内显示,用滚轮或滚动条浏览;选择「移动选区」后可拖动整个长截图框,继续标注、识别、复制与保存。 - **本地历史**:默认保留最近 10 张截图,可在工作台「保留历史」旁直接修改张数或关闭历史记录;双击历史图片继续编辑。手动保存目录与历史记录独立。 - **托盘常驻**:关闭工作台后仍可使用全局快捷键,从托盘菜单退出。 - **设置**:从工作台左侧或托盘菜单打开「设置」,可修改截图、剪贴板贴图、长截图快捷入口的全局快捷键,以及图片默认保存文件夹和「每次保存时询问保存位置」开关。关闭询问后,保存按钮和 `Ctrl+S` 直接保存到指定文件夹;快捷键冲突会提示并保留原绑定。支持「开机启动」,默认关闭;开启并保存后,登录 Windows 时自动启动并驻留托盘,双击托盘图标可打开工作台,取消勾选并保存即可关闭。移动程序文件夹后,请重新打开设置并保存以更新启动路径。修改历史保留张数不会清理手动保存的图片。 - **版本下载**:GitHub Releases 提供中文版本说明和完整 ZIP 包。 - **应用图标**:采用彩色四角截图框与黄色钢笔的最终稿,程序文件、托盘和编辑窗口保持一致。 ## 运行 ZIP 包支持 Windows 10 / 11 x64,包含主程序、OCR 组件、模型和 OCR 自带的 .NET 8 运行时;无需安装 Python、.NET SDK 或额外下载模型。系统需要已有 .NET Framework 4.8 和 Visual C++ x64 运行库。首次使用 OCR 会加载模型,之后复用同一进程;截图全程在本地处理。 双击 `dist\ShotInk.exe`。也可以在项目目录运行: ```powershell powershell -NoProfile -ExecutionPolicy Bypass -File .\run.ps1 ``` 运行脚本会检查源码内容;首次运行或源码变化后自动重新编译。更新源码后请先从系统托盘退出正在运行的程序,再运行脚本,避免继续使用旧 EXE。工作台标题会显示当前程序版本。源码构建还需要 **.NET SDK 8 或更新版本**,首次构建需联网还原锁定的 NuGet 依赖并下载校验模型: ```powershell powershell -NoProfile -ExecutionPolicy Bypass -File .\build.ps1 -Test ``` 构建目录包含 `dist\ShotInk.exe` 和 `dist\ocr\`,交付文件为 `ShotInk-portable.zip`。Visual Studio 也可打开 `ShotInk.csproj`(需要 .NET Framework 4.8 targeting pack)。主程序保持 .NET Framework 4.8。 OCR 使用 [RapidOcrNet](https://github.com/BobLd/RapidOcrNet) + ONNX Runtime 的 PP-OCRv6 small 模型,输出限定为中英文、数字和标点;关闭方向分类推理,复用模型会话并缓存上一张图片的结果。项目比较、实测和已知限制见 [OCR 技术说明](docs/ocr.md)。 ## 普通截图操作 普通截图选区后即可使用浮动工具栏。未选择绘图工具时可拖动整个选区;点击工具栏最左侧的「移动选区」图标可回到拖动模式。单击形状或线条立即使用默认工具,并在下方切换矩形 / 椭圆或箭头 / 直线。线条用单击逐点连接,右键或双击完成。 单击马赛克或橡皮擦即可涂抹,在下方选择「选框」可拖动框选区域;选框模式下画笔大小滑条会禁用,马赛克颗粒大小或模糊强度仍可调节。马赛克框选后,可拖动虚线框内部移动效果范围,拖动八个小方块改变大小,点击空白处继续新建;修改效果和范围均可撤销。截图选区的蓝色手柄用于调整截图边界;点击选区外可重新框选,`Esc` 或右键取消。 ## 长截图操作 1. 打开目标网页或文档,等待内容加载完成,停在需要截图的起点。 2. 按 `F1` 框选内容范围,避开固定页头、页脚和侧栏,再点文字识别右侧的长截图图标。`Ctrl+Alt+L` 也可直接框选并开始同一流程。 3. 工具栏只保留「完成」,手动向上或向下滚动原窗口;鼠标在选框内或停留在工具栏上均可使用滚轮。上一帧处理完成后及时响应后续滚轮;改变滚动方向时优先执行新方向,不再继续积压的旧方向滚动。从页面中间开始,也能向上补齐顶部、向下继续采集;经过已采集区域不会重复添加。程序以 10ms 为目标间隔检测变化,后台异步拼接;实际频率受系统调度与截图耗时影响。 4. 点击「完成」,原选框变为固定大小的长图预览,工具栏恢复。预览保持原像素大小,不再为了给滚动条留空间而缩小文字;用滚轮或右侧滚动条上下浏览,底部滚动条查看右侧边缘。选择工具栏最左侧的「移动选区」后,按住图片即可拖动整个长截图框;移动时统一绘制预览并擦除旧位置,保留图片内容、标注和滚动位置。导出包含整张长图。 高度达到 30,000 像素或总像素达到 8,000 万时自动完成并保留已拼接部分。长图可向上下两端扩展。拖动页面滚动条造成的大跨度跳转、动画和固定覆盖内容可能影响匹配。无法恢复重叠时会停止并在尺寸提示中说明已保留可拼接部分,避免静默遗漏。按 `Esc` 取消本次截图。 长截图完成后点击「文字识别」,会按 CPU 数量最多两路并行识别整张长图,保留完整坐标和阅读顺序。识别后右上角显示搜索框,输入中英文关键词即可查看匹配数量并自动滚动到结果;搜索兼容空格、全角字符及同一行的拆分文字块,例如 `list` 也能查找 `L i s t`,复制内容保持原样。`Ctrl+F` 聚焦搜索,`Enter` / `F3` 查找下一处,`Shift+Enter` / `Shift+F3` 查找上一处;搜索框内按 `Esc` 关闭搜索,仍可继续选择、复制文字。历史图片编辑器也支持搜索;搜索高亮不进入导出图片。 ## 快捷键 | 操作 | 快捷键 | | --- | --- | | 区域截图 | `F1` | | 剪贴板贴图 | `F3` | | 长截图 | `Ctrl+Alt+L` | | 保存编辑结果 | `Ctrl+S` | | 复制编辑结果 | `Ctrl+C` | | 撤销最近标注 | `Ctrl+Z` | | 重做最近撤销 | `Ctrl+Y` | | 完成区域截图并复制 | `Enter` | 以上为默认快捷键,可在「设置」中更改。若快捷键被其他程序占用,可更换组合,或使用工作台按钮和托盘菜单。 设置窗口打开期间暂停截图、长截图和贴图快捷键,同时禁用截图入口;可直接录入原先已绑定的按键。关闭设置后恢复快捷键,保存使用新设置,取消则继续使用原设置。 截图和设置目录:`%LOCALAPPDATA%\ShotInk`。从旧版升级时,如果存在 `%LOCALAPPDATA%\SnipasteLite` 且尚无新目录,会继续使用旧目录,保留截图历史与设置。应用本身不会向网络上传截图;GitHub 上传脚本只上传本项目源码,构建产物和运行数据均不纳入 Git。