zoukankan      html  css  js  c++  java
  • React:使用手写签名插件:react-canvas-draw 和 react-signature-canvas

    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',
    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={{ 900,height:400,className: 'sigCanvas'}} />
        </Modal>

      

  • 相关阅读:
    WPF ComboBox 控件用法
    WPF 调试办法
    wpf Border 装饰控件用法
    创建型模式:抽象工厂(Abstract Factory)
    创建型模式:工厂方法
    使用FreeSpire.Doc不安装Office组件的情况下操作Word文件
    【算法一】布隆过滤器算法学习附维基百科详细说明PDF文件
    C# 读写锁解决多线程下并发写入文件报异常“文件正在由另一进程使用,因此该进程无法访问此文件”的解决办法
    多线程下System.Threading.Interlocked用法
    WPF程序内嵌CEF框架浏览网站
  • 原文地址:https://www.cnblogs.com/GOOGnine/p/12703443.html
Copyright © 2011-2022 走看看