# writing-panel **Repository Path**: zhangxiao_coder/writing-panel ## Basic Information - **Project Name**: writing-panel - **Description**: JS+Canvas实现Web端写字板功能 - **Primary Language**: Unknown - **License**: ISC - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2022-07-26 - **Last Updated**: 2023-09-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: Canvas, JavaScript ## README # writing-panel JS 实现写字板功能 ## Functions - 绘画书写 - 设置面板样式(面板大小/线条宽度及颜色/线帽样式/...) - 支持线条撤销和恢复 - 图片保存/下载 - 获取`Base64`字符串 - 获取`Blob|File`对象 - 开启/关闭面板蒙层 - 销毁 - ...... --- ## Installation Using npm: ``` $ npm i -g npm $ npm i writing-panel ``` In web browsers: ```html ``` --- ## Usages ### PanelConfigOption-面板配置项 - PanelConfigOption.width: 面板宽度 - PanelConfigOption.height: 面板高度 - PanelConfigOption.panelBgColor: 面板背景色 - PanelConfigOption.lineWidth: 线条宽度 - PanelConfigOption.lineCap: 线帽样式 - PanelConfigOption.lineJoin: 线条交汇处边角的类型 - PanelConfigOption.imgType: 图片类型 - PanelConfigOption.cursorStyle: 鼠标移动到面板区域时的光标样式 - PanelConfigOption.autoResize: 浏览器窗口改变时是否重置面板,默认为true - PanelConfigOption.enableDPR: 是否启用设备像素比 `window.devicePixelRatio`,如果开始此选项,则在设置画布/面板的width和height属性值时,需要根据设备像素比进行计算,默认为`false`。 --- ### 书写面板组件类 #### 创建一个写字板组件类 ```ts const writingPanel = new WritingPanel(canvasElement, panelConfigOption); ``` 参数: - `canvasElement`: `HTMLCanvasElement`,canvas画布元素 - `options`: `PanelConfigOption`,面板参数配置对象的实例 --- #### 设置面板背景色 ```ts writingPanel.setPanelBgColor(color); ``` 参数: - `color` 颜色值,默认值为`null`,使用`PanelConfig.panelBgColor`属性值 返回: - `writingPanel` - 当前面板实例对象 --- #### 获取当前面板的背景色 ```ts writingPanel.getPanelBgColor(); ``` 返回: - `string` | `undefined` --- #### 设置写字板高度 ```ts writingPanel.setPanelHeight(height); ``` 参数: - `height`:`number`类型 返回: - `writingPanel`-当前写字板实例对象 --- #### 获取写字板的高度 ```ts writingPanel.getPanelHeight(); ``` 获取计算后的面板元素的综合高度值 返回: - 高度值,`string`类型,单位:`px` --- #### 设置写字板的宽度 ```ts writingPanel.setPanelWidth(width); ``` 参数: - `width`:`number`类型 返回: - `writingPanel`-当前写字板实例对象 --- #### 获取写字板的宽度 ```ts writingPanel.getPanelWidth(); ``` 获取计算后的面板元素的综合宽度值 返回: - 宽度值,`string`类型,单位:`px` --- #### 还原面板原始宽高比例 ```ts writingPanel.restorePanelWH(rstWidth, rstHeight); ``` 还原面板原始宽高比例。在设置了面板的宽度或高度后,可以使用此方法对面板宽度或高度进行还原。 参数: - `rstWidth`: `boolean`,还原面板宽度,默认值为 `true`。 - `rstHeight`: `boolean`,还原面板高度,默认值为 `true`。 返回: - `void` --- #### 设置线条宽度 ```ts writingPanel.setLineWidth(width); ``` 参数: - `width`: `number` 类型 返回: - `writingPanel` - 当前写字板实例对象 --- #### 设置线条线帽的样式 ```ts writingPanel.setLineCap(value); ``` 参数: - `value`: `CanvasLineCap` 类型 返回: - `writingPanel` - 当前写字板实例对象 --- #### 设置线条颜色 ```ts writingPanel.setLineColor(color); ``` 参数: - `color`: `string` 类型 返回: - `writingPanel` - 当前写字板实例对象 --- #### 清除面板内容 ```ts writingPanel.clearPanel(clearRecordFlag, resetPanelBgcFlag); ``` 参数: - `clearRecordFlag`: `boolean`类型,是否清除线条记录,默认值为 `true`. - `resetPanelBgcFlag`: `boolean`类型,是否重置面板背景色,默认值为 `true`. --- #### 获取画布的Base64编码字符串 ```ts writingPanel.getBase64(); ``` 返回: - base64编码字符串 --- #### 获取画布的Blob|File对象 ```ts writingPanel.getImgBlobOrFile(type, fileName); ``` 参数: - type: `string`类型,有两种可选类型(`blob`|`file`),默认值为`blob`,可选。 - fileName: `string`,文件名称,可选。 返回 - `Promise`: `Promise` --- #### 保存图片 ```ts writingPanel.saveImgFile(fileName); ``` 功能同`downloadImgFile()`方法,返回值为`Promise`类型,下载结束后可使用`.then()`方法执行其它相关操作。 参数: - `fileName`: 图片文件名称,如果不传则使用随机文件名称 返回: - `Promise`: `Promise` --- #### 下载图片 ```ts writingPanel.downloadImgFile(fileName); ``` 功能同`功能同saveImgFile()`方法,返回值为`Promise`类型,下载结束后可使用`.then()`方法执行其它相关操作。 参数: - `fileName`: 图片文件名称,如果不传则使用随机文件名称 返回: - `Promise`: `Promise` --- #### 撤销/单步撤销操作 ```ts writingPanel.revoke(); ``` --- #### 恢复撤销操作 ```ts writingPanel.recover(); ``` --- #### 设置面板区域的光标样式 ```ts writingPanel.setPanelCursorStyle(cursorStyle); ``` 参数: - `cursorStyle`: `string`类型,光标样式 返回: - `void` --- #### 判断面板是否为空 ```ts writingPanel.isEmpty(); ``` 返回: - `boolean` --- #### 销毁 ```ts writingPanel.destroy(); ``` 返回: - `void` --- #### 开启蒙层 ```ts writingPanel.openMask(); ``` 仅针对当前面板容器的范围设置蒙层,当面板容器的大小发生变化时,蒙层大小不会随之而改变。 返回: - `void` --- #### 关闭蒙层 ```ts writingPanel.closeMask(); ``` 返回: - `void` --- 更新日期:2022-08-07 ---