WillPlus/AdvHD 引擎 .pna 立绘文件交互式查看器。
基于 WPF + HandyControls 开发,支持实时图层合成、差分切换、语义化命名和批量导出。
- 🧩 智能分组 — 根据文件中的
Type=1/2标记自动划分部件组,树形结构展示 - 🎚️ 差分切换 — 在每个分组内自由切换不同的图层
- 🔒 分组锁定与贡献模式 — 每个分组可独立控制:
- ✕ 隐藏(不显示,不参与导出)
- ◉ 单层(只显示选中图层,🔒锁定后导出时固定使用该层,否则均作为可选项参与组合)
- ⬤ 全部叠加(所有图层合成为一张,以整体参与导出)
- ✏️ 双击重命名 — 分组和图层支持语义化命名(如“身体”、“微笑”),一键恢复默认
- 📦 批量导出 — 基于锁定状态自动生成笛卡尔积组合,支持预览、暂停/取消、进度反馈
- 📁 语义化文件名 — 导出格式
{文件名}_{分组名}[{图层名]}_{分组名}[{图层名}].png - ✂️ 适配内容 — 使用自动计算全图层最小外接矩形作为画布
- 🎨 自定义背景 — 设置窗口自由调整查看器背景颜色
- ⌨️ 快捷键 —
Ctrl+O打开 /Ctrl+S导出 /Ctrl+,设置 /Ctrl+B批量导出 /Ctrl+H关于 - 🔍 图像浏览 — 集成 HandyControls
ImageViewer,支持缩放、平移、拖拽 - 🖱️ 拖拽打开 — 直接把
.pna文件拖进窗口即可加载 - 📂 文件关联 — 双击
.pna文件直接启动查看器并自动加载,也可拖拽至.exe上打开
| 快捷键 | 功能 |
|---|---|
Ctrl+O |
打开 PNA 文件 |
Ctrl+S |
导出当前合成图 |
Ctrl+, |
打开设置窗口 |
Ctrl+B |
打开批量导出窗口 |
Ctrl+H |
打开关于窗口 |
Ctrl+C |
复制当前查看图到剪贴板 |
- .NET 10 SDK 或更高
- Visual Studio 2026 / Rider / VS Code(推荐)
克隆仓库并进入目录:
git clone git@github.com:EienTokei/PNAViewer.git
cd PNAViewer还原依赖并编译:
dotnet restore
dotnet build
dotnet run或直接在 Visual Studio 中打开解决方案,按 F5 运行。
- 点击 “📂 打开” 按钮或拖拽
.pna文件到窗口 - 左侧 TreeView 显示所有部件组,单击切换当前编辑的组
- 下方 图层列表 显示当前组内的所有差分,单击切换选中图层
- 每个分组右侧有两个控制按钮:
- 贡献模式切换(✕ / ◉ / ⬤):决定该组在预览和导出中的行为
- 锁定/解锁(🔓/🔒):仅在 ◉ 模式下生效,锁定后固定当前选中图层
- 双击 分组或图层可重命名,右键或点击“恢复默认”回退
- 右侧画布实时合成显示所有图层叠加效果
- 适配内容 开关控制是否自动裁剪到立绘的实际占用区域
- 📦 批量导出 根据各分组当前的贡献模式和锁定状态自动生成组合并导出为 PNG
- HandyControls — WPF 控件库
- .NET 10 原生库
通过 NuGet 安装:
dotnet add package HandyControls- ✅ 全部 45 个
.pna立绘文件(L/M/S/X 四档分辨率)均正常解析与合成。 - ✅ 标题文件 SYS_Title.pna — 解析与合成正常,配合分组贡献模式(✕ / ◉ / ⬤)可手动调整各分组的显示与导出行为,适用于 UI 元素浏览。
- ✅ 随机抽取的
ST03A_X.pna、ST04B_X.pna兼容。
欢迎提交 Issue 或 Pull Request。如果你发现了新的 .pna 变种,也欢迎提供样本以便进一步完善解析器。
PNA Viewer 目前由我一个人在维护,但它的方向不应该只由我一个人决定。
如果你在使用过程中遇到了任何问题、觉得某个功能用着不顺手,或者有新的想法想加进来,请一定提个 Issue 或建议。对我来说,每一条反馈都是继续优化这个项目的动力。
你的声音会被听到,你的需求会直接决定接下来版本里会出现什么功能。期待你的留言!
以下是我个人计划中、但暂不打算落地的功能方向:
- 持久化重命名配置
- 自定义图片背景
- ......
💡 如果你对其中某个功能特别感兴趣,欢迎提 Issue 告诉我 —— 你的反馈会直接影响优先级。
GNU General Public License v3.0
如有问题或建议,欢迎在 GitHub 上提交 Issue。
Happy viewing! 🎉




