# vue-fabric
**Repository Path**: shipeifei_gonghe/vue-fabric
## Basic Information
- **Project Name**: vue-fabric
- **Description**: 基于fabric.js库 创建的vue版本fabric组件,定制画板,图片组合绘制
- **Primary Language**: JavaScript
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 54
- **Created**: 2020-06-16
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
 
    
        
             
        
        
             
        
        
             
        
         
             
        
    
    
# vue-fabric
purestart vue-fabric.
 ## Installation
```
npm install vue-fabric --save
```
## 依赖
下载[customiseControls.min.js](https://github.com/purestart/vue-fabric/blob/master/static/js/customiseControls.min.js).和 [fabric.min.js](https://github.com/purestart/vue-fabric/blob/master/static/js/fabric.min.js).到本地 static/js/文件下
本地项目 index.html 引入
```
```
## Import
```
在main.js中
import 'vue-fabric/dist/vue-fabric.min.css';
import { Fabric } from 'vue-fabric';
```
```
Vue.use(Fabric);
```
使用
```
 
```
## Usage
#### Props
| Name   | Type   | Default | Description   |
| ------ | ------ | ------- | ------------- |
| id     | String | "canvas"| id            |
| width  | Number | 0       | canvas width  |
| height | Number | 0       | canvas height |
## Function
> 方法调用
> this.\$refs.canvas.方法名(params)
#### createImage(url,options) 绘制图片
| params  | Type   | Description                                                                                                              |
| ------- | ------ | ------------------------------------------------------------------------------------------------------------------------ |
| url     | String | image url                                                                                                                |
| options | Object | id(唯一标识该元素,以下每个方法 options 参数都带 id),width,height,left,top,registeObjectEvent (Boolean 是否注册对象事件) |
#### createTextbox(text,options) 绘制文本
| params  | Type   | Description                                |
| ------- | ------ | ------------------------------------------ |
| text    | String | text content                               |
| options | Object | width,left,top,fillColor(颜色),fontSize,id |
#### createRect(options) 绘制矩形
| options   | Type   | Description    |
| --------- | ------ | -------------- |
| left      | Number | left           |
| top       | Number | top            |
| width     | Number | Rect width     |
| height    | Number | Rect height    |
| fillColor | String | Rect fillColor |
| id        | String | 唯一标识 id    |
#### freeDrawConfig(options) 开启/关闭自由绘制(画笔)
| options       | Type    | Description                 |
| ------------- | ------- | --------------------------- |
| isDrawingMode | Boolean | 是否开启自由绘制 true/false |
| color         | String  | 绘制线颜色                  |
| drawWidth     | Number  | 绘制线宽                    |
#### createLine(options) 绘制直线
| options     | Type   | Description              |
| ----------- | ------ | ------------------------ |
| x,y,x1,y1   | Number | line points,直线两点坐标 |
| fillColor   | String | fillColor 填充颜色       |
| strokeColor | String | strokeColor 绘制颜色     |
#### drawDottedline(options) 绘制虚线
| options   | Type   | Description                               |
| --------- | ------ | ----------------------------------------- |
| x,y,x1,y1 | Number | line points,直线两点坐标                  |
| color     | String | 绘制线颜色                                |
| drawWidth | Number | 绘制线宽                                  |
| offset    | Number | 默认 6,每隔 offset 个像素空 empty 个像素 |
| empty     | Number | 默认 3,每隔 offset 个像素空 empty 个像素 |
#### drawArrowLine(options) 绘制箭头直线
| options   | Type   | Description              |
| --------- | ------ | ------------------------ |
| x,y,x1,y1 | Number | line points,直线两点坐标 |
| color     | String | 绘制线颜色               |
| drawWidth | Number | 绘制线宽                 |
| fillColor | Number | 默认透明,填充颜色       |
| theta     | Number | 默认 35,箭头角度大小    |
| headlen   | Number | 默认 35,箭头角度大小    |
#### createTriangle(options) 绘制三角形
| options         | Type   | Description         |
| --------------- | ------ | ------------------- |
| x,y,x1,y1,x2,y2 | Number | 三角形 3 点坐标位置 |
| left,top        | Number | position 位置       |
| color           | String | 绘制线颜色          |
| fillColor       | String | fillColor 填充颜色  |
| drawWidth       | Number | 绘制线宽            |
#### createEqualTriangle(options) 绘制等边三角形
| options  | Type   | Description        |
| -------- | ------ | ------------------ |
| left,top | Number | position 位置      |
| fill     | String | fillColor 填充颜色 |
| width    | Number | 三角形底边宽度     |
| height   | Number | 三角形高           |
#### drawByPath(pathArray,options) 根据轨迹绘制图形
| params    | Type   | Description                                                                      |
| --------- | ------ | -------------------------------------------------------------------------------- |
| pathArray | Array  | 轨迹所在点数组,按顺序正时针或逆时针,如三角形 [[50, 50], [120, 120], [80, 160]] |
| options   | Object | left,top,strokeColor,strokeWidth,fillColor                                       |
#### createCircle(options) 绘制圆
| options  | Type   | Description        |
| -------- | ------ | ------------------ |
| left,top | Number | position 位置      |
| fill     | String | fillColor 填充颜色 |
| radius   | Number | 圆形半径           |
#### createEllipse(options) 绘制椭圆
| options     | Type   | Description                        |
| ----------- | ------ | ---------------------------------- |
| rx,ry       | Number | rx , ry 椭圆两个长轴尺寸和短轴尺寸 |
| left,top    | Number | position 位置                      |
| fillColor   | String | fillColor 填充颜色                 |
| strokeColor | String | strokeColor 绘制线颜色             |
| angle       | Number | angle 倾斜角度                     |
#### setRotate(angle) 旋转选中元素
| params | Type   | Description |
| ------ | ------ | ----------- |
| angle  | Number | 旋转角度    |
#### setBackgroundImage(url) 设置画布背景图片
| params | Type   | Description  |
| ------ | ------ | ------------ |
| url    | String | 背景图片 Url |
#### renderAll() 重新渲染画布
#### setBackgroundColor(color) 设置画布背景颜色
| params | Type   | Description |
| ------ | ------ | ----------- |
| color  | String | 背景颜色    |
#### toggleMirror(options) 设置图片元素镜像翻转
| options | Type   | Description                         |
| ------- | ------ | ----------------------------------- |
| flip    | String | 可选值 X,Y 默认值 X , 镜像翻转 X,Y |
#### setCornerIcons(options) 自定义旋转操作元素图片
| options               | Type   | Description                                                   |
| --------------------- | ------ | ------------------------------------------------------------- |
| size                  | Npmber | 图片大小 px                                                   |
| borderColor           | String | 图片边框颜色                                                  |
| cornerBackgroundColor | String | 设置背景颜色                                                  |
| cornerShape           | String | 形状,默认'rect' ,可选'rect', 'circle'                       |
| tl                    | String | top left 左上角元素图片地址(本地只能 static 下的图片)       |
| tr                    | String | top right 右上角元素图片地址(本地只能 static 下的图片)      |
| bl                    | String | bottom left 左下角元素图片地址(本地只能 static 下的图片)    |
| br                    | String | bottom right 右下角元素图片地址(本地只能 static 下的图片)   |
| ml                    | String | middle left 中间左边元素图片地址(本地只能 static 下的图片)  |
| mr                    | String | middle right 中间右边元素图片地址(本地只能 static 下的图片) |
| mtr                   | String | middle top 顶部元素图片地址(本地只能 static 下的图片)       |
#### toNextLayer() 设置当前选中画布到下一层
#### toLastLayer() 设置当前选中画布到上一层
#### toBottomLayer() 设置当前选中画布到底层
#### toTopLayer() 设置当前选中画布到顶层
#### discardActive() 取消选中
#### getObjects() 获取当前画布上的所有元素对象
#### clear() 清除当前画布上的所有元素对象
#### toDataUrl() 返回当前画布的 base64 图片
#### toJson() 返回当前画布的 json 对象
#### loadFromJSON(json,cb) 从 json 对象中加载画布数据
| params | Type     | Description      |
| ------ | -------- | ---------------- |
| json   | Object   | json 对象        |
| cb     | Function | 加载完成回调函数 |
#### toSvg() 返回当前画布的 svg 图片
#### removeCurrentObj() 删除当前选中对象
#### getEditObj() 返回当前选中对象,并不在画布上显示,用于编辑当前元素
#### setEditObj(obj) 设置添加对象到画布
## 事件
```
 
```
### 鼠标事件
| name           | Type  | Description    |
| -------------- | ----- | -------------- |
| mouse:down     | event | mouse down     |
| mouse:up       | event | mouse up       |
| mouse:move     | event | mouse move     |
| mouse:dblclick | event | mouse dblclick |
| mouse:over     | event | mouse over     |
| mouse:out      | event | mouse out      |
### 其它事件
| name                     | Type  | Description                                    |
| ------------------------ | ----- | ---------------------------------------------- |
| selection:created        | event | 选中 canvas 元素对象,单选和多选都会触发此事件 |
| selection:updated        | event | selection updated                              |
| selection:cleared        | event | selection cleared                              |
| before:selection:cleared | event | before selection cleared                       |
| object:added             | event | 当有元素被添加进来时候触发                     |
| object:removed           | event | object removed                                 |
| object:modified          | event | object modified                                |
| object:rotating          | event | object rotating                                |
| object:scaling           | event | object scaling                                 |
| object:moving            | event | object moving                                  |
## Changelog
### 2018.08.26
> v0.1.4 \* 初始化组件库
### 2018.09.20
> v0.1.8 \* 新增 api 常用接口创建文档
### 2019.01.19---v0.1.9
- 新增画板事件,鼠标事件、选中事件等
- 新增绘制三角形
- 新增绘制虚线
- 新增画笔自由绘制
- 新增绘制箭头
- 新增取消选中方法
### 2019.01.31---v0.1.10
- 修改绘制图片(createImage 方法)不能定位 top 的 BUG
- 修改镜像翻转函数 toggleMirror ,新增参数 options ,X 翻转和 Y 翻转
### 2019.05.09---v0.1.20
- fix webpack-dev-server 版本导致的 npm run dev fail
- 新增方法 drawByPath 根据轨迹绘制形状图形
### 2020.03.02---v0.1.26
- 新增属性id 修复一个页面使用多个vue-fabric没有渲染成功的问题
### 2020.04.15---v0.1.27
- 修复id = "canvas"的情况下会报错的问题
### 2020.05.08---v0.1.28
- 修复更新Mirror只有图片生效的问题
## Installation
```
npm install vue-fabric --save
```
## 依赖
下载[customiseControls.min.js](https://github.com/purestart/vue-fabric/blob/master/static/js/customiseControls.min.js).和 [fabric.min.js](https://github.com/purestart/vue-fabric/blob/master/static/js/fabric.min.js).到本地 static/js/文件下
本地项目 index.html 引入
```
```
## Import
```
在main.js中
import 'vue-fabric/dist/vue-fabric.min.css';
import { Fabric } from 'vue-fabric';
```
```
Vue.use(Fabric);
```
使用
```
 
```
## Usage
#### Props
| Name   | Type   | Default | Description   |
| ------ | ------ | ------- | ------------- |
| id     | String | "canvas"| id            |
| width  | Number | 0       | canvas width  |
| height | Number | 0       | canvas height |
## Function
> 方法调用
> this.\$refs.canvas.方法名(params)
#### createImage(url,options) 绘制图片
| params  | Type   | Description                                                                                                              |
| ------- | ------ | ------------------------------------------------------------------------------------------------------------------------ |
| url     | String | image url                                                                                                                |
| options | Object | id(唯一标识该元素,以下每个方法 options 参数都带 id),width,height,left,top,registeObjectEvent (Boolean 是否注册对象事件) |
#### createTextbox(text,options) 绘制文本
| params  | Type   | Description                                |
| ------- | ------ | ------------------------------------------ |
| text    | String | text content                               |
| options | Object | width,left,top,fillColor(颜色),fontSize,id |
#### createRect(options) 绘制矩形
| options   | Type   | Description    |
| --------- | ------ | -------------- |
| left      | Number | left           |
| top       | Number | top            |
| width     | Number | Rect width     |
| height    | Number | Rect height    |
| fillColor | String | Rect fillColor |
| id        | String | 唯一标识 id    |
#### freeDrawConfig(options) 开启/关闭自由绘制(画笔)
| options       | Type    | Description                 |
| ------------- | ------- | --------------------------- |
| isDrawingMode | Boolean | 是否开启自由绘制 true/false |
| color         | String  | 绘制线颜色                  |
| drawWidth     | Number  | 绘制线宽                    |
#### createLine(options) 绘制直线
| options     | Type   | Description              |
| ----------- | ------ | ------------------------ |
| x,y,x1,y1   | Number | line points,直线两点坐标 |
| fillColor   | String | fillColor 填充颜色       |
| strokeColor | String | strokeColor 绘制颜色     |
#### drawDottedline(options) 绘制虚线
| options   | Type   | Description                               |
| --------- | ------ | ----------------------------------------- |
| x,y,x1,y1 | Number | line points,直线两点坐标                  |
| color     | String | 绘制线颜色                                |
| drawWidth | Number | 绘制线宽                                  |
| offset    | Number | 默认 6,每隔 offset 个像素空 empty 个像素 |
| empty     | Number | 默认 3,每隔 offset 个像素空 empty 个像素 |
#### drawArrowLine(options) 绘制箭头直线
| options   | Type   | Description              |
| --------- | ------ | ------------------------ |
| x,y,x1,y1 | Number | line points,直线两点坐标 |
| color     | String | 绘制线颜色               |
| drawWidth | Number | 绘制线宽                 |
| fillColor | Number | 默认透明,填充颜色       |
| theta     | Number | 默认 35,箭头角度大小    |
| headlen   | Number | 默认 35,箭头角度大小    |
#### createTriangle(options) 绘制三角形
| options         | Type   | Description         |
| --------------- | ------ | ------------------- |
| x,y,x1,y1,x2,y2 | Number | 三角形 3 点坐标位置 |
| left,top        | Number | position 位置       |
| color           | String | 绘制线颜色          |
| fillColor       | String | fillColor 填充颜色  |
| drawWidth       | Number | 绘制线宽            |
#### createEqualTriangle(options) 绘制等边三角形
| options  | Type   | Description        |
| -------- | ------ | ------------------ |
| left,top | Number | position 位置      |
| fill     | String | fillColor 填充颜色 |
| width    | Number | 三角形底边宽度     |
| height   | Number | 三角形高           |
#### drawByPath(pathArray,options) 根据轨迹绘制图形
| params    | Type   | Description                                                                      |
| --------- | ------ | -------------------------------------------------------------------------------- |
| pathArray | Array  | 轨迹所在点数组,按顺序正时针或逆时针,如三角形 [[50, 50], [120, 120], [80, 160]] |
| options   | Object | left,top,strokeColor,strokeWidth,fillColor                                       |
#### createCircle(options) 绘制圆
| options  | Type   | Description        |
| -------- | ------ | ------------------ |
| left,top | Number | position 位置      |
| fill     | String | fillColor 填充颜色 |
| radius   | Number | 圆形半径           |
#### createEllipse(options) 绘制椭圆
| options     | Type   | Description                        |
| ----------- | ------ | ---------------------------------- |
| rx,ry       | Number | rx , ry 椭圆两个长轴尺寸和短轴尺寸 |
| left,top    | Number | position 位置                      |
| fillColor   | String | fillColor 填充颜色                 |
| strokeColor | String | strokeColor 绘制线颜色             |
| angle       | Number | angle 倾斜角度                     |
#### setRotate(angle) 旋转选中元素
| params | Type   | Description |
| ------ | ------ | ----------- |
| angle  | Number | 旋转角度    |
#### setBackgroundImage(url) 设置画布背景图片
| params | Type   | Description  |
| ------ | ------ | ------------ |
| url    | String | 背景图片 Url |
#### renderAll() 重新渲染画布
#### setBackgroundColor(color) 设置画布背景颜色
| params | Type   | Description |
| ------ | ------ | ----------- |
| color  | String | 背景颜色    |
#### toggleMirror(options) 设置图片元素镜像翻转
| options | Type   | Description                         |
| ------- | ------ | ----------------------------------- |
| flip    | String | 可选值 X,Y 默认值 X , 镜像翻转 X,Y |
#### setCornerIcons(options) 自定义旋转操作元素图片
| options               | Type   | Description                                                   |
| --------------------- | ------ | ------------------------------------------------------------- |
| size                  | Npmber | 图片大小 px                                                   |
| borderColor           | String | 图片边框颜色                                                  |
| cornerBackgroundColor | String | 设置背景颜色                                                  |
| cornerShape           | String | 形状,默认'rect' ,可选'rect', 'circle'                       |
| tl                    | String | top left 左上角元素图片地址(本地只能 static 下的图片)       |
| tr                    | String | top right 右上角元素图片地址(本地只能 static 下的图片)      |
| bl                    | String | bottom left 左下角元素图片地址(本地只能 static 下的图片)    |
| br                    | String | bottom right 右下角元素图片地址(本地只能 static 下的图片)   |
| ml                    | String | middle left 中间左边元素图片地址(本地只能 static 下的图片)  |
| mr                    | String | middle right 中间右边元素图片地址(本地只能 static 下的图片) |
| mtr                   | String | middle top 顶部元素图片地址(本地只能 static 下的图片)       |
#### toNextLayer() 设置当前选中画布到下一层
#### toLastLayer() 设置当前选中画布到上一层
#### toBottomLayer() 设置当前选中画布到底层
#### toTopLayer() 设置当前选中画布到顶层
#### discardActive() 取消选中
#### getObjects() 获取当前画布上的所有元素对象
#### clear() 清除当前画布上的所有元素对象
#### toDataUrl() 返回当前画布的 base64 图片
#### toJson() 返回当前画布的 json 对象
#### loadFromJSON(json,cb) 从 json 对象中加载画布数据
| params | Type     | Description      |
| ------ | -------- | ---------------- |
| json   | Object   | json 对象        |
| cb     | Function | 加载完成回调函数 |
#### toSvg() 返回当前画布的 svg 图片
#### removeCurrentObj() 删除当前选中对象
#### getEditObj() 返回当前选中对象,并不在画布上显示,用于编辑当前元素
#### setEditObj(obj) 设置添加对象到画布
## 事件
```
 
```
### 鼠标事件
| name           | Type  | Description    |
| -------------- | ----- | -------------- |
| mouse:down     | event | mouse down     |
| mouse:up       | event | mouse up       |
| mouse:move     | event | mouse move     |
| mouse:dblclick | event | mouse dblclick |
| mouse:over     | event | mouse over     |
| mouse:out      | event | mouse out      |
### 其它事件
| name                     | Type  | Description                                    |
| ------------------------ | ----- | ---------------------------------------------- |
| selection:created        | event | 选中 canvas 元素对象,单选和多选都会触发此事件 |
| selection:updated        | event | selection updated                              |
| selection:cleared        | event | selection cleared                              |
| before:selection:cleared | event | before selection cleared                       |
| object:added             | event | 当有元素被添加进来时候触发                     |
| object:removed           | event | object removed                                 |
| object:modified          | event | object modified                                |
| object:rotating          | event | object rotating                                |
| object:scaling           | event | object scaling                                 |
| object:moving            | event | object moving                                  |
## Changelog
### 2018.08.26
> v0.1.4 \* 初始化组件库
### 2018.09.20
> v0.1.8 \* 新增 api 常用接口创建文档
### 2019.01.19---v0.1.9
- 新增画板事件,鼠标事件、选中事件等
- 新增绘制三角形
- 新增绘制虚线
- 新增画笔自由绘制
- 新增绘制箭头
- 新增取消选中方法
### 2019.01.31---v0.1.10
- 修改绘制图片(createImage 方法)不能定位 top 的 BUG
- 修改镜像翻转函数 toggleMirror ,新增参数 options ,X 翻转和 Y 翻转
### 2019.05.09---v0.1.20
- fix webpack-dev-server 版本导致的 npm run dev fail
- 新增方法 drawByPath 根据轨迹绘制形状图形
### 2020.03.02---v0.1.26
- 新增属性id 修复一个页面使用多个vue-fabric没有渲染成功的问题
### 2020.04.15---v0.1.27
- 修复id = "canvas"的情况下会报错的问题
### 2020.05.08---v0.1.28
- 修复更新Mirror只有图片生效的问题