一.React:使用手写签名插件:react-canvas-draw 和 react-signature-canvas

1
2
3
npm install react-canvas-draw --save
 
import CanvasDraw from "react-canvas-draw";
3、使用组件
1
signCanvas= React.createRef();

  


设置签名组件的属性
1
2
3
4
5
6
7
8
<CanvasDraw
    ref={this.signCanvas}
    brushColor="#000"
    brushRadius={3}
    lazyRadius={10}
    canvasWidth={"100%"}
    canvasHeight={250}
/>

  

4、得到签名并转化为图片
1
let signImg = this.signCanvas.current.canvas.drawing.toDataURL('image/png');

  

5、清空画布
1
this.signCanvas.current.clear();

  


6、将签名信息图片展示


使用此插件,转为png图片后无背景色透明,需要处理。
参考来源 https://www.jianshu.com/p/d36bf61d8034

d
emo:https://embiem.github.io/react-canvas-draw/

react-signature-canvas

这个插件签名生成的图片虽然也是透明的,但处理起来比react-canvas-draw这个插件容易多,

示例:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 //先安装
  
  npm i -S react-signature-canvas
  
  //导入
  
  import SignatureCanvas from 'react-signature-canvas';
  
  
  
  
resetSignBtn=() =>{
    this.signCanvas.current.clear();
}
  
//给画布添加背景色,只需要在画布打开是拿到画布,给画布添加颜色即可
  
async signBtn(type) {
    await this.setState({signModal: true});
   //得到画布
    let canvas = this.signCanvas.current._canvas;
    if (canvas.getContext) {
        let ctx = canvas.getContext('2d');
        ctx.fillStyle = "#fff";//添加颜色
        ctx.fillRect(0, 0, canvas.width, canvas.height);
    }
}
  
  
  
     <Modal
                title={'签名'}
                visible={signModal}
                onCancel={this.hideSignModal}
                footer={[
                    <Button key={'sign_rep' + Math.random()} onClick={this.resetSignBtn}>重签</Button>,
                    <Button key={'sign_sub' + Math.random()} type='primary' onClick={this.confirmSignBtn}>确定</Button>,
  
                ]}
                destroyOnClose={true}
                centered={true}
                width={1000}
       >

  {/*这个组将的class样式的宽高,要与属性width,height一样,不然可能出现画线轨迹与光标偏移量太大*/}

1
<SignatureCanvas ref={this.signCanvas} penColor='#000' <br>          canvasProps={{ width:900,height:400,className: 'sigCanvas'}} /> <br>    </Modal>

 demo:https://agilgur5.github.io/react-signature-canvas/

二.vue:使用手写签名插件:vue-signature-padvue-esign、vue-drawing-canvas和vue-signature-canvas

 
posted on   ygunoil  阅读(268)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
历史上的今天:
2022-03-04 el-table大数据量渲染卡顿的解决方案
2022-03-04 el-table 统计行放在最前面
2021-03-04 esbuild
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示