查看: 88|回复: 0

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

[复制链接]

1

主题

0

回帖

0

积分

热心网友

金币
0
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2010-10-3
发表于 2020-4-15 10:07:00 | 显示全部楼层 |阅读模式
1、安装
npm install react-canvas-draw --save

2、导入
import CanvasDraw from "react-canvas-draw";

3、使用组件
signCanvas= React.createRef();

设置签名组件的属性
<CanvasDraw
ref={this.signCanvas}
brushColor="#000"
brushRadius={3}
lazyRadius={10}
canvasWidth={"100%"}
canvasHeight={250}
/>
4、得到签名并转化为图片
let signImg = this.signCanvas.current.canvas.drawing.toDataURL('image/png');
5、清空画布
this.signCanvas.current.clear();
6、将签名信息图片展示
{
title: '签名',
dataIndex : 'signImg',
fixed: 'left',
align: 'center',
width:150,
maxWidth:150,
_resizeable: true,
ellipsis: true,
render : (value,record,index) =>{
return <>
<img src={value} style={{height:60}}/>
</>;
}
}

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


react-signature-canvas

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

示例:

 

 //先安装

  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一样,不然可能出现画线轨迹与光标偏移量太大*/}
        <SignatureCanvas ref={this.signCanvas} penColor='#000' 
          canvasProps={{ width:900,height:400,className: 'sigCanvas'}} />
    </Modal>

  

 



来源:https://www.cnblogs.com/GOOGnine/p/12703443.html
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部