# vue 网格标绘系统
**Repository Path**: nankeyang/vue-grid-plotting-system
## Basic Information
- **Project Name**: vue 网格标绘系统
- **Description**: 凭兴趣再做,也不知道有什么用,或许可以用来做游戏, 或许可以用来标绘
- **Primary Language**: JavaScript
- **License**: Not specified
- **Default Branch**: 新分支
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 23
- **Created**: 2023-12-08
- **Last Updated**: 2023-12-08
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 网格系统文档
### 基本使用方法
#### 实例化网格系统对象
```
let canvas = document.querySelector("#myCanvas");
let gls = new GridSystem(canvas);
```
> 源代码中用private修饰的方法表示私有,系统自用的,使用时可以忽略不看
#### gls实例对象的API
> 用于绘制画布以及画布内的元素
```
gls.draw()
```
> 限制拖拽范围,传入一个数组,数组有四个数值分别是上,右,下,左
```
gls.setPageSliceByExtent([0,0,0,0])
```
> 根据相对坐标获取像素坐标,传入一个数组,数组有两个数值分别是x,y。返回一个数组坐标
关于相对坐标与绝对坐标解释:
相对坐标是实例化后用于设置元素的位置,这个位置是相对于网格的原点的,是开发中所使用的
绝对坐标是源代码内部渲染到画布上所用到的坐标,是相对于canvas左上角的,所以开发时基本不用关心(绝对坐标我也会表述成绝对坐标)
```
gls.getPixelPos([0,0])
```
> 根据像素坐标获取相对坐标,传入一个数组,数组有两个数值分别是x,y。返回一个数组坐标
```
gls.getRelativePos([0,0])
```
> 获取像素大小,传入一个数字。返回一个数字
```
gls.getRatioSize(0)
```
> 获取相对大小,传入一个数字。返回一个数字
```
gls.getOriginalSize(0)
```
> 获取像素坐标以及像素长度,传入一个对象,对象包含x,y,width,height。返回同样的对象
```
gls.getPixelPosAndWH({x:0, y:0, width: 0, height: 0})
```
> 获取相对坐标以及相对长度,传入一个对象,对象包含x,y,width,height。返回同样的对象
```
gls.getRelativePosAndWH({x:0, y:0, width: 0, height: 0})
```
> 向画布中添加实例化后的元素MyText,Rect....传入一个元素
```
let feature = new Feature(...)
gls.addFeature(feature)
```
> 从画布中删除指定元素,传入一个元素
```
gls.removeFeature(feature)
```
> 通过元素的id从画布中删除元素,传入一个元素的id
```
gls.removeFeatureById(id)
```
> 加载字体,建议在渲染(draw)之前使用,传入FontFamily对象
```
gls.loadFont(fontFamily)
```
> 获得点与canvas中心的距离,传入一个点坐标,返回一个x,y的距离值
```
gls.getCenterDist(point)
```
> 获得canvas中心点
```
gls.getCenterPoint()
```
> 将画布缩放至指定大小。第一个参数缩放等级, 第二个参数传一个数组坐标,以该点作为中心点缩放
```
gls.zoomTo(0)
```
> 移动画布使元素居中,传入一个元素
```
gls.toCenter(feature)
```
> 将画布移动至指定坐标, 第一个参数坐标,第二个参数移动的过渡时间
```
gls.movePageto([x,y], 0)
```
> 判断某个网格坐标内有没有元素
```
gls.hasFeatureInGridCoord([x,y], 0)
```
> 根据鼠标(像素)坐标获取网格坐标
```
gls.getGridCoord(0,0)
```
> 根据网格坐标获取相对坐标
```
gls.getPosByGridCoord(0,0)
```
> 判断某个网格坐标内有没有元素
```
gls.hasFeatureInGridCoord([x,y], 0)
```
> 获取元素的坐标大小以及边界值信息,第一个参数传入feature元素, 第二个参数传布尔值, true表示获取像素坐标大小以及上下左右边界坐标, false则表示获取的是相对值
```
gls.getEdgePoints(feature, false)
```
> 判断元素有没有在画布外面
```
gls.hasOutScreen(feature)
```
> 开启或关闭历史记录
```
gls.enableStack(true)
```
> 开启或关闭历史记录,用于编辑时的撤销恢复
```
gls.enableStack(true)
```
> 撤销一步
```
gls.undo()
```
> 恢复一步
```
gls.restore()
```
> 根据canvas宽高跟新宽高属性
```
gls.updateWH()
```
> 改变canvas画布大小
```
gls.changeSize(0,0)
```
> 通过单击创建元素,传入一个你要创建元素
```
gls.click2DrawByClick(feature)
```
> 通过连续点击创建元素,传入一个你要创建元素,一般用于创建多点线段
```
gls.click2DrawByContinuousClick(feature)
```
> 通过连续移动创建元素,传入一个你要创建元素,比如自由绘制线段(画笔)
```
gls.click2DrawByMove(feature)
```
> 获取传入元素的所有点坐标,第一个参数设置返回值的格式
```
gls.getFeatruesCoordArr(boolean, features)
```
> 传入元素,找出这些元素组成的矩形上下左右最大值最小值,第二个参数设置返回值是像素坐标还是相对坐标
```
gls.getFeaturesRange(features, boolean)
```
> 传入元素组成的矩形范围,让他们整体居中,并缩放至所有元素都在canvas范围内,第二个参数是pandding值,留出边缘的空隙距离
```
gls.getFeaturesRange(features, 0)
```