makeit-graffiti/README.md
makeit a27ca7b465
All checks were successful
continuous-integration/drone/push Build is passing
update README.md
2024-08-07 14:50:03 +08:00

121 lines
4.5 KiB
Markdown
Raw Permalink 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.

# 涂鸦白板
> 当前的开源代码为 Demo 版本且为单机版的。UI 设计的相对简单,功能不尽完善,此次的 Demo 版本开源了常用的涂鸦工具,包括无限画布(拖拽)、马克笔、激光笔、圆形、矩形、橡皮擦、文本、撤销、恢复、截屏等涂鸦的常用工具,后续另有相对比较成熟的版本,集成了会议 / 文档 / 实时同步 / 在线聊天 / 用户管理等功能,同时重新设计了 UI后续将提供体验地址。
>
> Demo 体验地址:[https://graffiti.makeit.vip/](https://graffiti.makeit.vip/)
## 初始化
```ts
const stage = new Stage({container: `canvas's container id`});
const layer = new Layer();
stage.add(layer);
// 初始化 Stage 时, 需要手动初始化一个图层, 将该图层添加至当前 Stage,
// 完成初始化操作后, 所有的绘制动作都将在当前图层内操作.
// Stage 内可无限添加画板(Canvas), 同时也支持每个 Canvas 内无限添加图层(Layer).
```
## 目录结构
```html
src
├─assets 静态资源
│ ├─fonts 字体(iconfont)
│ ├─images 图片资源
│ └─styles 样式资源
│ └─canvas 组件样式
├─components 组件模块
│ └─canvas 画板
│ ├─shapes 图形工具类
│ ├─tools 画板工具类
│ └─workers 多线程任务
├─router 路由管理
├─store 状态管理
│ └─stage Stage 状态
├─utils 通用工具类
└─views 视图
└─canvas Canvas 视图
```
## 画板组件
```html
canvas
├─Base.ts 基类
├─Canvas.ts 画板类
├─Cursor.ts 光标类
├─Events.ts 事件类
├─Layer.ts 图层类
├─Point.ts 坐标类
├─Shape.ts 图形类
├─Stage.ts 中心类
├─Throttle.ts 节流类
├─Tools.ts 笔刷类
├─Utils.ts 工具类
├─... 其它基础/工具类 ...
├─shapes
│ ├─Arc.ts 圆形类
│ ├─Rect.ts 矩形类
│ └─... 更多工具...
├─tools
│ ├─Arrow.ts 箭头
│ ├─Circular.ts 圆形
│ ├─Drag.ts 拖拽
│ ├─Eraser.ts 橡皮擦
│ ├─Laser.ts 激光笔
│ ├─Line.ts 直线
│ ├─Pencil.ts 马克笔
│ ├─Rect.ts 矩形
│ ├─Screenshot.ts 截屏
│ ├─Selection.ts 选择
│ ├─Text.ts 文本
│ └─... 更多工具实现类
└─workers
│ ├─rect.worker.ts 矩形任务处理
| ├─points.worker.ts 坐标任务处理
| └─socket.worker.ts Socket 任务处理
```
## 视图文件
```html
views
├─Backward.vue 回撤
├─Brush.vue 笔刷工具
├─Document.vue 文档管理
├─Drag.vue 拖动画布(无限画布)
├─Eraser.vue 橡皮擦
├─Forward.vue 恢复
├─Import.vue 导入文档
├─Index.vue 页面入口
├─Layers.vue 图层管理
├─Palette.vue 调色板
├─Screenfull.vue 全屏
├─Screenshot.vue 截屏
├─Selection.vue 选择
├─Stages.vue 画布管理
├─Text.vue 文本功能
├─Thickness.vue 笔刷粗细
└─Users.vue 用户管理
```
## 工具开发
```bash
# 1. 新建工具类(src/components/canvas/tools)
# 2. 工具类继承 Tools 基类及其实现 MiTools
# 3. 调用 Stage.register(tool) 进行注册或在 Stage.registerTools() 方法中内置
```
## 常用命令
```bash
npm install # 项目设置(安装依赖)
npm run serve # 本地运行
npm run build:dev # 项目构建(development)
npm run build:pro # 项目构建(production)
npm run test:unit # 单元测试
npm run lint # 语法检测
```