基于vue如何制作签名组件,代码是什么
Admin 2022-08-09 群英技术资讯 882 次浏览
在实际应用中,我们有时候会遇到“基于vue如何制作签名组件,代码是什么”这样的问题,我们该怎样来处理呢?下文给大家介绍了解决方法,希望这篇“基于vue如何制作签名组件,代码是什么”文章能帮助大家解决问题。效果如下:

<template>
<div class="sign">
<div class="content">
<canvas id="canvas" :width="width" :height="height"/>
</div>
<div class="btn">
<button @click="clearCanvas()">清除</button>
<button @click="save()">保存</button>
</div>
</div>
</template>
<script>
export default {
name: 'App',
data () {
return {
};
},
props: {
// 画布宽度
width: {
type: Number,
default: window.innerWidth
},
// 画布高度
height: {
type: Number,
default: 500
},
// 笔触半径
radius: {
type: Number,
default: 10
},
// 笔触颜色
color: {
type: String,
default: '#000'
},
// 画布填充背景
fillStyle: {
type: String,
default: '#ccc'
}
},
created () {
},
mounted () {
this.int();
},
methods: {
// 绘制涂擦效果圆形
// @param { integer } 圆心的x坐标
// @param { integer } 圆心的y坐标
// @param { integer } 圆心半径
// @param { string } 填充的颜色
fillCircle (ctx, x, y, radius, fillColor) {
ctx.fillStyle = fillColor || this.color;
ctx.beginPath();
ctx.moveTo(x, y);
ctx.arc(x, y, radius, 0, Math.PI * 2, false); // 标准画圆
ctx.fill();
},
// 保存图片
save (name = '签名图片') {
let imgBase64 = this.canvas.toDataURL('image/png'); // 获取截图base64, 1表示质量(无损压缩)
let a = document.createElement('a');
a.download = name + '.png'; // 必须要设置download属性才能够直接下载base64图片
a.href = imgBase64;
a.click(); // 触发点击,起到下载效果
},
// 清除画布
clearCanvas () {
let canvas = this.canvas;
canvas.getContext('2d').fillStyle = this.fillStyle;
canvas.getContext('2d').fillRect(0, 0, this.width, this.height);
},
// 数据初始化
int () {
this.canvas = document.querySelector('#canvas');
let ctx = this.canvas.getContext('2d');
let move = false; // 按下标识
ctx.fillStyle = this.fillStyle;
ctx.fillRect(0, 0, this.width, this.height);
// 事件兼容PC 移动端
let eventStart = 'ontouchstart' in document ? 'touchstart' : 'mousedown';
let eventMove = 'ontouchmove' in document ? 'touchmove' : 'mousemove';
let eventEnd = 'ontouchend' in document ? 'touchend' : 'mouseup';
this.canvas.addEventListener(eventStart, (e) => {
console.log(e);
let sx = e.touches ? e.touches[0].pageX : e.pageX;
let sy = e.touches ? e.touches[0].pageY : e.pageY;
move = true;
this.fillCircle(ctx, sx, sy, this.radius);
}, false);
this.canvas.addEventListener(eventMove, (e) => {
let sx = e.touches ? e.touches[0].pageX : e.pageX;
let sy = e.touches ? e.touches[0].pageY : e.pageY;
move && this.fillCircle(ctx, sx, sy, this.radius);
}, false);
this.canvas.addEventListener(eventEnd, (e) => {
move = false;
}, false);
}
}
};
</script>
<style lang="less" scoped>
.sign{
.btn {
padding:10px;
button {
height: 50px;
width:100%;
margin-bottom:10px;
font-size: 20px;
}
}
}
</style>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
js如何查找字符串的最长单词?这篇文章给大家分享是关于基于Free Code Camp基本算法脚本来查找字符串的最长单词,本文会介绍三种方法,是小编比较推荐的,有需要的朋友可以看一看。
生成器有throw方法,该方法与next的效果相同。唯一的区别是next方法传输的参数回到正常值。throw方法传输的参数是错误的对象。
最近小编接到一个项目pc端和移动端是两个独立的项目,两个项目项目中的内容基本相同,链接组合的方式都有规律可循,接到的需求便是在移动端访问pc端的URL连接时,重定向至移动端对应页面,下面小编给大家分享实现过程,一起看看吧
main.js是我们的入口文件,主要作用是初始化vue实例,并引入所需要的插件,下面这篇文章主要给大家介绍了关于vue项目中main.js使用方法的相关资料,需要的朋友可以参考下
JavaScript怎样做下载文件的功能?有很多网站都会有提供下载文件的功能,小编觉得比较使用,因此这篇文章就给大家分享一下JS实现前端下载文件功能的具体代码,感兴趣的朋友可以参考。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008