v0.8.0 — 工程重构(绘制度量层/拆大文件/i18n自检)+ 自动更新
v0.8.0
这一版没加新功能,做的是工程上的三件事(避免项目变成没人敢改的"屎山"),外加一个自动更新。
一、绘制度量层 DrawKit
项目里同一个错误犯过四次:测量用一套参数、绘制用另一套 → 文字被裁、框和图形错位、预览正常但导出跑偏。
根子不是"写错了",而是约定没有被强制。
新层把「量」的结果封装成 Fit 值(字体、字号、样式都在里面),画的时候只接受它 —— 调用方拿不到单独的字号,也就没法"另起一套"去画。错误在结构上写不出来。
配套 tests/drawkit-test.cs(项目第一套像素级自动化测试,6/6 通过),当场逼出两个没预料到的问题:字号与宽度不是线性关系(改迭代缩小)、缩到下限仍放不下时会一直溢出(改逐字截断加省略号)。
同时全线改用 GDI+:实测 GDI 的 DrawText 在 2560×1440 画布上单次 9.2ms(小画布 0.43ms,差 21 倍)。
二、拆大文件
| 文件 | 拆前 | 拆后 |
|---|---|---|
75-SettingsForm.cs |
1607 | 1057 |
61-WheelForm.Draw.cs |
1205 | 357 |
51-OverlayForm.Annotate.cs |
1194 | 616 |
50-OverlayForm.cs |
1000 | 763 |
64-WheelForm.Input.cs |
769 | 593 |
每一处都用同一个标准验证:拆完编译,exe 大小与拆分前完全一致(322,048 字节)—— 证明是纯搬移、零行为变化。
三、多语言自检脚本
tools/check-i18n.ps1:扫漏翻、扫"同一个中文配了不同英文"(翻译漂移)、扫长度异常。实测 395 条全部健康。
四、自动更新(不花一分钱)
不需要服务器、不需要代码签名、不需要任何付费账号。
检查(匿名读 GitHub Releases,限流 60 次/小时够用)→ 下载到临时目录 → 用 --apply-update 启动"更新器模式"的自己:等主进程退出 → 覆盖文件 → 重新拉起主程序 → 自己退出。
升级是覆盖已有文件,不触发 SmartScreen。托盘菜单新增「检查更新」,设置里保留开关(启动时静默检查,只在新版时提一句)。
自己实现了 ZIP 解压兜底(DeflateStream)—— 因为编译目标是 .NET 4.0,反射调不到系统解压组件,这个坑是测试发现的。
下载
SnapWheel-v0.8.0-full.zip— 完整版(含万能键)SnapWheel-v0.2.22-nokey.zip— 无万能键版