一个用 SwiftUI 写的 n×n 点阵动画生成工具(macOS)。点按或拖动鼠标即可在画布上"打点",编辑多帧后导出为文本文件 —— 每行一个十六进制或二进制数字(最左侧像素 = 最高位)。
- 网格尺寸可选:4×4 / 8×8 / 16×16 / 24×24 / 32×32
- 绘制工具:Draw / Erase(拖动 = 连续画线,单击 = 画一个点)
- 多帧管理:新增 / 复制 / 删除 / 一键清除当前帧
- 播放预览:可调延迟 0.05s ~ 2.0s
- 导出格式:二进制(
0b00001111)或十六进制(0x0F),实时预览 - 复制到剪贴板 / 另存为
.txt
需要 macOS 26+(Tahoe)和 Swift 6.2+ / Xcode 26+。界面采用 Apple Liquid Glass 设计语言。
cd ./dotMatrix_Generater
swift runopen Package.swift在 Xcode 中按 ⌘R 运行。
仓库自带一个 build.sh,一键完成:release 构建 → 拼 .app bundle → ad-hoc 签名 → 用 hdiutil 打 .dmg。
./build.sh
open dist/DotMatrixGenerator.app
open dist/DotMatrixGenerator-1.0.0.dmg产物落在 dist/:
dist/
├── DotMatrixGenerator.app/ # 双击可运行的 app bundle(544K)
└── DotMatrixGenerator-1.0.0.dmg # 压缩后的分发包(152K,UDZO)
build.sh 还会自动处理"只装了 CommandLineTools、需要回退到 26.5 SDK 才能编 SwiftUI"那个坑——默认 swift build -c release 失败时,会用 MacOSX26.5.sdk 重试。
Ad-hoc 签名(
codesign -s -)让本机 Gatekeeper 放行,但分发给其他人时他们会看到"未识别开发者"警告——需要换成 Developer ID 证书签名(codesign -s "Developer ID Application: <Your Name>"),并notarytool公证。
- 在中间画布上按住鼠标拖动画线,或者单击画一个点。
- 在左侧"Tool"区切换 Draw / Erase 模式。
- 工具栏 Add Frame 新建一帧;底部帧条上的缩略图可点击切换、右键复制/删除。
- 左侧"Playback"可调速度、播放预览。
- 右侧"Export Preview"实时显示导出文本,Copy 复制或 Save… 存为文件。
- 每一帧占一行(行尾无分号)。
- 一行内含
n个数字(n= 网格大小),每个数字 = 一行像素的 n 位编码(最左侧像素 = 最高位)。 - 数字之间用
,(英文逗号 + 空格)分隔。 - 帧与帧之间用换行分隔。
- 同一行内格式统一为当前模式(Binary →
0bxxxxxxxx;Hex →0xNN),不混用。
例:8×8 帧,行为 00000000, 00000000, 00000000, 00011000, 00011000, 00000000, 00000000, 00000000:
Binary 模式:
0b00000000, 0b00000000, 0b00000000, 0b00011000, 0b00011000, 0b00000000, 0b00000000, 0b00000000
Hex 模式:
0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00
dotMatrix_Generater/
├── Package.swift
└── Sources/DotMatrixGenerator/
├── DotMatrixGeneratorApp.swift # 入口
├── ContentView.swift # 主界面
├── DotGridView.swift # n×n 画布
├── FrameStripView.swift # 底部帧条
├── DotFrame.swift # 帧模型
├── FrameStore.swift # 全局状态
└── TextExporter.swift # 文本导出
