首页 > 其他分享 >电子签名的写法

电子签名的写法

时间:2022-11-28 15:03:32浏览次数:39  
标签:const ctx cvs height 电子签名 let document 写法

<!DOCTYPE html> <html lang="en">
<head>     <meta charset="UTF-8">     <meta http-equiv="X-UA-Compatible" content="IE=edge">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <title>Document</title>     <style>         #cvs {             background-color: #000;             background: #000;
        }
        body {             height: 100vh;             background-color: rgb(26, 25, 25);
        }     </style> </head>
<body>     <canvas id="cvs"></canvas>     <div style="margin-top: 50px">         <button id="clear">清空</button>         <button id="back">回退</button>         <button id="save">保存</button>     </div> </body> <script>     let width = 800     let height = 400     let isDownin = false     let lastX = 0     let lastY = 0     let cacheData = []
    const cvs = document.getElementById('cvs')     const ctx = cvs.getContext('2d')     cvs.width = width     cvs.height = height
    cvs.addEventListener('mousedown', (e) => {         isDownin = true         lastX = e.pageX;         lastY = e.pageY;         let cacheItem = ctx.getImageData(0, 0, width, height);         cacheData.push(cacheItem)         ctx.moveTo(lastX, lastY)     })     cvs.addEventListener('mousemove', (e) => {         if (!isDownin) return         drawLine(e.pageX, e.pageY)         ctx.stroke()     })     cvs.addEventListener('mouseup', (e) => {         isDownin = false     })
    function drawLine(x, y) {         ctx.beginPath();         ctx.lineWidth = 8;         ctx.strokeStyle = '#fff';         ctx.lineCap = 'round'         ctx.lineJoin = "round";         ctx.moveTo(lastX, lastY);         ctx.lineTo(x, y);         ctx.stroke();         lastX = x;         lastY = y;     }
    /* 清空 */     const clear = document.getElementById('clear')     clear.onclick = () => {         ctx.clearRect(0, 0, width, height)     }
    /* 回退 */     const back = document.getElementById('back')     back.onclick = () => {         if (cacheData.length === 0) return;         ctx.putImageData(cacheData.pop(), 0, 0);     }
    const save = document.getElementById('save')     save.onclick = () => {         cvs.toBlob((blob) => {             const a = document.createElement('a');             document.body.append(a);             a.download = `签名.png`;             a.href = URL.createObjectURL(blob);             a.click();             a.remove();         });     } </script>
</html>

标签:const,ctx,cvs,height,电子签名,let,document,写法
From: https://www.cnblogs.com/czb1218/p/16932212.html

相关文章

  • 我自己写Makefile, 里面注释了一些写法, 希望能帮到别人
     我自己写Makefile,里面注释了一些写法,希望能帮到别人。 #make一些规则#############################################################################$@:......
  • 注释写法_便签
    单行注释//你好,这里是注释内容,在Java里,注释直接写在代码行后面也不会有问题呢!多行注释/*多行注释让我们可以写很多很多行注释都没有问题。*/Java......
  • vue路由传参的三种写法
    methods:{goSearch(){//1.路由传参字符串形式//this.$router.push("/Search/"+this.keyword+"?k="+this.keyword.toUpp......
  • 使用了外键的models 结合 Modelviewset的写法
    Serializers    重写create方法即可classMemberSerializers(serializers.ModelSerializer):defcreate(self,validate):users=Member.objects.......
  • 沃通CA证书支持多所高校招投标文件电子签名
    招投标电子化是国家大力推行的战略性工作,为贯彻落实电子招投标工作,各政企单位、高校均启动采购与招投标系统,自行组织的招标、单一来源等采购活动都通过该类系统在线进行。近......
  • 动态规划求解最大子段和 (两种写法+还原最优解)
    前言在这篇文章中,我将介绍动态规划求解最大子段和(即最大子数组累加和问题)的两种写法思路及其还原最优解,后面还包含了一点小小的优化。......
  • [排序算法] 快速排序 (C++) (含三种写法)
    快速排序解释快速排序QuickSort与归并排序一样,也是典型的分治法的应用。(如果有对归并排序还不了解的童鞋,可以看看这里哟~归并排序)❤❤❤快速排序的分治模式1、......
  • Redission的几种写法
    失败无限重试-多个线程竞争,第一个拿到锁第二个会无限重试RLocklock=redisson.getLock("码哥字节");try{//1.最常用的第一种写法lock.lock();......
  • mybatis 之 sql语句写法集锦
    1、mapper接口中的方法存在批量数据操作,接口参数是List类型   在mybatis的xml文件中,使用foreach动态标签拼接SQL语句,每一条数据的更新语句对应一条update语句,......
  • [Swift] SwiftUI布局的一些写法基础(用Swift构造UI布局)
    这个文档是在你 完全熟悉Objective-C上用代码构造UI的前提下写的官方教程:https://developer.apple.com/tutorials/swiftui/creating-and-combining-views*使用的一些......