最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

VUE使用canvas實現(xiàn)簽名組件

 更新時間:2022年07月13日 11:01:06   作者:#麻辣小龍蝦#  
這篇文章主要為大家詳細(xì)介紹了VUE使用canvas實現(xiàn)簽名組件,兼容PC移動端,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了VUE使用canvas實現(xiàn)簽名組件的具體代碼,供大家參考,具體內(nèi)容如下

效果如下:

<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坐標(biāo)
? ? // @param { integer } 圓心的y坐標(biāo)
? ? // @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); // 標(biāo)準(zhǔn)畫圓
? ? ? ctx.fill();
? ? },
? ? // 保存圖片
? ? save (name = '簽名圖片') {
? ? ? let imgBase64 = this.canvas.toDataURL('image/png'); // 獲取截圖base64, 1表示質(zhì)量(無損壓縮)
? ? ? let a = document.createElement('a');
? ? ? a.download = name + '.png'; // 必須要設(shè)置download屬性才能夠直接下載base64圖片
? ? ? a.href = imgBase64;
? ? ? a.click(); // 觸發(fā)點擊,起到下載效果
? ? },
? ? // 清除畫布
? ? clearCanvas () {
? ? ? let canvas = this.canvas;
? ? ? canvas.getContext('2d').fillStyle = this.fillStyle;
? ? ? canvas.getContext('2d').fillRect(0, 0, this.width, this.height);
? ? },
? ? // 數(shù)據(jù)初始化
? ? int () {
? ? ? this.canvas = document.querySelector('#canvas');
? ? ? let ctx = this.canvas.getContext('2d');
? ? ? let move = false; // 按下標(biāo)識
? ? ? 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>

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue實現(xiàn)組件值的累加

    vue實現(xiàn)組件值的累加

    這篇文章主要為大家詳細(xì)介紹了vue實現(xiàn)組件值的累加,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • axios上傳文件錯誤:Current?request?is?not?a?multipart?request解決

    axios上傳文件錯誤:Current?request?is?not?a?multipart?request

    最近工作中使用vue上傳文件的時候遇到了個問題,下面這篇文章主要給大家介紹了關(guān)于axios上傳文件錯誤:Current?request?is?not?a?multipart?request解決的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • 如何使用el-table實現(xiàn)純前端導(dǎo)出(適用于el-table任意表格)

    如何使用el-table實現(xiàn)純前端導(dǎo)出(適用于el-table任意表格)

    我們?nèi)粘W鲰椖?特別是后臺管理系統(tǒng),常常需要導(dǎo)出excel文件,這篇文章主要給大家介紹了關(guān)于如何使用el-table實現(xiàn)純前端導(dǎo)出的相關(guān)資料,本文適用于el-table任意表格,需要的朋友可以參考下
    2024-03-03
  • 簡單聊一聊vue中data的代理和監(jiān)聽

    簡單聊一聊vue中data的代理和監(jiān)聽

    這篇文章主要給大家介紹了關(guān)于vue中data的代理和監(jiān)聽的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用vue具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2022-09-09
  • Vue腳手架學(xué)習(xí)之項目創(chuàng)建方式

    Vue腳手架學(xué)習(xí)之項目創(chuàng)建方式

    這篇文章主要給大家介紹了關(guān)于Vue腳手架學(xué)習(xí)之項目創(chuàng)建方式的相關(guān)資料,文中通過介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • vue與ant-tree結(jié)合偽造懶加載并可以查詢

    vue與ant-tree結(jié)合偽造懶加載并可以查詢

    這篇文章主要為大家介紹了vue與ant-tree結(jié)合偽造懶加載并可以查詢實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • vue圖片懶加載的兩種方法詳解

    vue圖片懶加載的兩種方法詳解

    懶加載是一種網(wǎng)頁優(yōu)化技術(shù),也被稱為延遲加載,它的主要目的是在網(wǎng)頁加載時,只加載當(dāng)前可見區(qū)域內(nèi)的內(nèi)容,而延遲加載其他不可見區(qū)域的內(nèi)容,從而提高網(wǎng)頁的加載速度和性能,這篇文章主要介紹了vue圖片懶加載的兩種方法,需要的朋友可以參考下
    2023-07-07
  • vue使用showdown并實現(xiàn)代碼區(qū)域高亮的示例代碼

    vue使用showdown并實現(xiàn)代碼區(qū)域高亮的示例代碼

    這篇文章主要介紹了vue使用showdown并實現(xiàn)代碼區(qū)域高亮的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • vue 項目接口管理的實現(xiàn)

    vue 項目接口管理的實現(xiàn)

    在vue開發(fā)中,會涉及到很多接口的處理,當(dāng)項目足夠大時,就需要定義規(guī)范統(tǒng)一的接口,本文就來介紹一下vue 項目接口管理,具有一定的參考價值,感興趣的小伙伴可以一起來了解一下
    2019-01-01
  • Vue實現(xiàn)當(dāng)前頁面刷新的4種方法舉例

    Vue實現(xiàn)當(dāng)前頁面刷新的4種方法舉例

    我們在開發(fā)vue的頁面的時候,有時候會遇到需要刷新當(dāng)前頁面功能,但是vue框架自帶的router是不支持刷新當(dāng)前頁面功能,下面這篇文章主要給大家介紹了關(guān)于Vue實現(xiàn)當(dāng)前頁面刷新的4種方法,需要的朋友可以參考下
    2023-04-04

最新評論

开化县| 婺源县| 绥化市| 醴陵市| 独山县| 松溪县| 连云港市| 益阳市| 武城县| 兰考县| 察雅县| 德江县| 河曲县| 灌南县| 格尔木市| 北川| 永胜县| 乌兰县| 九台市| 沭阳县| 浦东新区| 武宣县| 凤山市| 大连市| 馆陶县| 柳河县| 镇安县| 榆树市| 板桥市| 肥乡县| 怀宁县| 林芝县| 家居| 玛沁县| 揭东县| 花莲市| 德化县| 梅州市| 赞皇县| 广安市| 边坝县|