Back to home

L-mimimi

SnapShot

一款 Windows 截图工具:截图 · 离线 OCR 文字识别 · 桌面置顶钉图,单文件绿色版,双击即用,无需安装、无需联网。

Stars
0
Language
C#
Created
Aug 15, 2026
Updated
Aug 15, 2026

Introduction

SnapShot 截图助手

一款 Windows 截图工具:截图 · 离线 OCR 文字识别 · 桌面置顶钉图,单文件绿色版,双击即用,无需安装、无需联网。

功能

功能说明
截图全局热键 / 托盘菜单,拖拽选择区域,自动保存 + 自动复制到剪贴板
离线提取文字 (OCR)调用 Windows 系统自带 OCR 引擎(Windows.Media.Ocr),完全离线、无需联网、无需捆绑模型;内置图像预处理(小图放大 + 灰度 + 自动对比度增强),小字与中文识别效果显著提升;智能自动识别:含中文的图片自动切换中文引擎,纯英文图片使用英文引擎;识别结果原样保留空格与排版
修改截图快捷键设置界面点击输入框后直接按下新组合键即可修改(含"识别文字"快捷键)
更改图片存储位置设置界面自由选择存储文件夹,截图自动按时间戳命名保存
桌面钉图任意图片(文件 / 剪贴板 / 截图)钉在桌面上,始终置顶不被其他窗口覆盖,可拖动、缩放、调透明度
鼠标穿透钉图可开启鼠标穿透:图片留在桌面最上层但完全不阻挡鼠标操作,点击会落到下方窗口

使用方法

  1. 双击运行 SnapShot.exe,程序驻留任务栏右下角托盘(蓝色 T 图标)。
  2. 截图:按 Ctrl + Alt + A(可在设置中修改),拖拽选择区域后松手,图片自动保存并复制到剪贴板,选区旁出现工具条:
    • 识别文字:离线 OCR 提取图中文字(可复制 / 保存为 TXT)
    • 复制 / 另存为 / 钉在桌面 / 关闭
  3. 截图并识别:按 Ctrl + Alt + S,截图后直接进入文字识别窗口。
  4. 钉图:托盘菜单 →「钉住图片…(从文件)」或「钉住剪贴板图片」;也可以把截图通过工具条钉在桌面。
    • 拖动图片移动位置;滚轮缩放;双击在"原始大小 / 适应屏幕"间切换
    • 右键菜单:鼠标穿透、复制、另存为、放大/缩小、恢复原始大小、适应屏幕、透明度、关闭
    • 鼠标穿透:勾选后图片不再响应鼠标(窗口右下角显示"鼠标穿透中"角标),点击会直接作用于下方窗口。恢复方式:托盘菜单「取消所有钉图穿透」或按 Ctrl + Alt + P
    • 透明度:右键菜单快速档位(30%~100%)或「自定义…」滑块精确调整(10%~100%),可勾选"设为默认透明度"
    • 置顶机制:窗口每 400ms 自动重新锁定为最顶层,即使被其他置顶窗口抢占也能立即回到最前
  5. 设置:托盘菜单 →「设置…」,可修改:
    • 截图快捷键 / 识别文字快捷键(点击输入框 → 直接按新组合键;Esc 取消、Delete 清除)
    • 图片存储位置、是否自动保存 / 自动复制
    • OCR 默认语言(默认英文 en-US;选择「自动识别」时智能检测:图片含中文自动用中文引擎,纯英文用英文引擎;强制识别中文请选择"中文(简体)")
  6. 配置保存在 %APPDATA%\SnapShot\settings.json,日志在 %APPDATA%\SnapShot\logs\

系统要求

  • Windows 10 / Windows 11(x64 或 x86,自带 .NET Framework 4.8,无需安装运行库)
  • 中文 OCR 需要系统已安装「中文(简体)」语言并启用「基本文字识别」: 设置 → 时间和语言 → 语言和区域 → 添加语言 → 中文(简体) → 语言选项 → 基本文字识别(仅需安装一次,之后完全离线可用;未安装时自动回退英文/自动识别)

开发与构建

  • 技术栈:C#(.NET Framework 4.8)+ WinForms + Windows.Media.Ocr(系统 WinRT OCR)
  • 编译器:Windows 自带的 csc.exe,无需安装任何 SDK,构建过程完全离线
  • 构建:在 PowerShell 中运行 .\build.ps1,产物为 dist\SnapShot.exe(约 50 KB 单文件)
  • 自检:SnapShot.exe --diagnose <输出文件> 检测 OCR 语言、离线识别与热键注册
  • 自动化测试:.\build_test.ps1 构建 SnapShot_test.exe(设置序列化、屏幕截图、钉图置顶机制)

目录结构

SnapShot/
├── SnapShot.exe          # 成品(dist 目录)
├── src/                  # 源码
│   ├── Program.cs        # 入口、单实例、DPI
│   ├── AppContext.cs     # 托盘、菜单、截图流程编排
│   ├── HotkeyManager.cs  # 全局热键(RegisterHotKey)
│   ├── CaptureOverlay.cs # 全屏选区截图
│   ├── OcrService.cs     # 离线 OCR(Windows.Media.Ocr)
│   ├── OcrForm.cs        # 识别结果窗口
│   ├── ToolbarForm.cs    # 截图后工具条
│   ├── PinForm.cs        # 桌面置顶钉图
│   ├── SettingsForm.cs   # 设置界面
│   └── ...
├── assets/               # 图标、应用清单
├── tools/                # 自动化测试
├── build.ps1             # 构建脚本
└── build_test.ps1        # 测试构建脚本

常见问题

  • 识别不了中文:请先确认系统中已安装「中文(简体)基本文字识别」语言组件(见上文),并在识别窗口或设置中将语言切换为中文。
  • 识别效果不佳:内置预处理会自动放大过小的图片并增强对比度;截图时尽量框选清晰、正立的文字区域,避免反光、渐变背景与艺术字体。
  • 快捷键无效:可能与其他程序冲突,请在设置中更换组合键。
  • 钉图被覆盖:钉图窗口是置顶窗口,会被定时器持续锁回最顶层;若与全屏独占游戏/远程桌面共存,请将游戏切到窗口化。
  • 穿透后无法操作钉图:这是预期行为。按 Ctrl + Alt + P 或托盘菜单「取消所有钉图穿透」即可恢复。
  • 杀毒软件提示:本程序未签名,个别杀软可能误报;可通过"仍要运行"放行,或在源码基础上自行构建。