Files
pureRef/README.md

221 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# RefVroid
一个用于动画参考的桌面应用支持图片、GIF、视频和文本的管理和查看。
## 功能特点
### 📸 媒体支持
- **图片**:支持 PNG、JPG、GIF、BMP、WebP 等格式
- **GIF 动画**:完整支持 GIF 动画播放和复制(保持动画)
- **视频**:支持 MP4 视频播放和循环
- **YouTube**:支持嵌入 YouTube 视频
- **文本**:支持添加文本元素
### 🎨 画布操作
- **缩放**鼠标滚轮、Ctrl+空格+拖动
- **平移**:空格+拖动、鼠标中键拖动
- **多选**:左键框选多个元素
- **调整大小**:拖动元素边缘
- **层级管理**:自动管理元素层级
### ⌨️ 快捷键
#### 文件操作
- `Ctrl+C` - 复制选中元素
- `Ctrl+V` - 粘贴图片/文本
- `Ctrl+Z` - 撤销
- `Ctrl+Y` / `Ctrl+Shift+Z` - 重做
- `Ctrl+L` - 加载场景
- `Ctrl+S` - 保存场景
- `Ctrl+N` - 新建场景
- `Ctrl+W` - 关闭窗口
#### 窗口操作
- `Ctrl+F` - 最大化/恢复窗口
- `Ctrl+M` - 最小化窗口
- `Ctrl+H` - 显示/隐藏帮助
#### 视图操作
- `空格+拖动` - 平移画布
- `Ctrl+空格+拖动` - 缩放画布
- `鼠标滚轮` - 缩放画布
- `中键拖动` - 平移画布
#### 元素操作
- `左键拖动` - 移动元素
- `左键框选` - 选择多个元素
- `拖动边缘` - 调整大小
- `Delete` - 删除选中元素
- `Esc` - 取消选择框
#### 其他
- `右键` - 显示菜单
- `Ctrl+Shift+I` - 打开开发者工具
## 安装
### 前置要求
- Node.js 14 或更高版本
- npm 或 yarn
### 安装步骤
1. 克隆仓库
```bash
git clone <repository-url>
cd RefVroid
```
2. 安装依赖
```bash
npm install
```
3. 运行应用
```bash
npm start
```
### 调试模式
```bash
npm start debug
```
## 使用方法
### 添加媒体
1. **拖放文件**直接将图片、GIF 或视频文件拖入窗口
2. **粘贴**
- 从剪贴板粘贴图片Ctrl+V
- 粘贴 YouTube 链接
- 粘贴文本内容
### 管理元素
- **移动**:左键拖动元素
- **调整大小**:选中元素后拖动边缘
- **多选**:按住左键框选多个元素
- **删除**:选中后按 Delete 键
- **复制**:选中后按 Ctrl+C然后 Ctrl+V 粘贴
### 保存和加载
- **保存场景**Ctrl+S保存为 `.purgif` 文件
- **加载场景**Ctrl+L选择 `.purgif` 文件
- **自动加载**:应用会自动加载最近使用的场景
### 窗口管理
- **置顶**:右键菜单 → 总是置顶
- **透明度**:右键菜单 → 透明度 → 选择透明度
- **锁定窗口**:右键菜单 → 锁定窗口(防止误操作)
- **解锁**:通过系统托盘图标解锁
## 特殊功能
### GIF 动画支持
- 拖放 GIF 文件会自动保存为 base64 格式,保持动画
- 复制 GIF 时会保持动画(粘贴到 QQ、微信等应用
- 支持从剪贴板粘贴 GIF 并保持动画
### 撤销/重做
- 支持撤销和重做以下操作:
- 添加元素
- 删除元素
- 移动元素
- 调整大小
- 历史记录最多保存 50 个状态
### 多选复制
- 选中多个元素后复制,会将所有图片保存为临时文件
- GIF 文件会保持动画格式
- 可以一次性粘贴多张图片到其他应用
## 技术栈
- **Electron** - 桌面应用框架
- **Node.js** - 后端运行时
- **Interact.js** - 拖拽和调整大小
- **noUiSlider** - 视频循环控制(不推荐使用)
- **YouTube IFrame API** - YouTube 视频嵌入(不推荐使用)
## 文件格式
### 场景文件 (.purgif)
场景文件是 JSON 格式,包含:
- 所有元素的位置、大小和内容
- 画布的缩放和平移状态
- 视频的循环点设置
示例结构:
```json
{
"currentScale": 1,
"translate": {
"translateX": 0,
"translateY": 0
},
"elements": [
{
"path": "data:image/gif;base64,...",
"type": "dataURL",
"x": 100,
"y": 100,
"width": 200,
"height": 200
}
]
}
```
## 已知问题
### 飞书粘贴显示路径
- 粘贴多张图片到飞书时,可能会显示文件路径而不是图片
- 这是因为飞书对剪贴板的处理方式不同
- 解决方案:直接拖放图片到飞书,而不是复制粘贴
### GIF 动画兼容性
- 某些应用可能不支持从剪贴板粘贴 GIF 动画
- 如果粘贴后 GIF 不动,尝试将 GIF 保存为文件后再拖入目标应用
## 开发
### 项目结构
```
RefVroid/
├── main.js # 主进程
├── preload.js # 预加载脚本
├── renderer.js # 渲染进程
├── index.html # 主窗口
├── help.html # 帮助窗口
├── index.css # 样式
└── package.json # 项目配置
```
### 构建
```bash
npm run build
```
## 许可证
查看 LICENSE 文件了解详情。
## 贡献
欢迎提交 Issue 和 Pull Request
## 更新日志
### 最新版本
- ✅ 支持 GIF 动画保持(拖放和复制)
- ✅ 支持撤销/重做功能Ctrl+Z / Ctrl+Y
- ✅ 支持多选删除
- ✅ 支持框选多个元素
- ✅ 改进 GIF 复制兼容性
- ✅ 添加系统托盘图标
- ✅ 添加窗口锁定功能
- ✅ 自动清理临时文件
## 支持
如有问题或建议,请提交 Issue。