Heim > Web-Frontend > View.js > Vue und Canvas: So implementieren Sie handschriftliche Signatur- und Gestenerkennungsfunktionen

Vue und Canvas: So implementieren Sie handschriftliche Signatur- und Gestenerkennungsfunktionen

PHPz
Freigeben: 2023-07-18 08:49:38
Original
1231 Leute haben es durchsucht

Vue und Canvas: So implementieren Sie Handschrift-Signatur- und Gestenerkennungsfunktionen

Einführung:
Handschrift-Signatur- und Gestenerkennungsfunktionen werden in modernen Anwendungen immer häufiger verwendet und können Benutzern eine intuitivere und natürlichere Art der Interaktion bieten. Als beliebtes Front-End-Framework kann Vue.js diese beiden Funktionen mit dem Canvas-Element erreichen. In diesem Artikel wird die Verwendung von Vue.js- und Canvas-Elementen zur Implementierung von Handschriftsignatur- und Gestenerkennungsfunktionen vorgestellt und entsprechende Codebeispiele gegeben.

1. Implementierung der handschriftlichen Signaturfunktion

Um die handschriftliche Signaturfunktion zu implementieren, müssen wir zunächst eine Vue-Komponente erstellen, die das Canvas-Element enthält. In dieser Komponente implementieren wir die Funktion, mit der Benutzer Signaturen auf Canvas zeichnen können.

<template>
  <div>
    <h1>手写签名</h1>
    <canvas ref="canvas" @mousedown="startDrawing" @mousemove="drawing" @mouseup="stopDrawing"></canvas>
    <button @click="clearCanvas">清除</button>
    <button @click="saveSignature">保存</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isDrawing: false,
      signatureData: null
    }
  },
  methods: {
    startDrawing(event) {
      this.isDrawing = true;
      const canvas = this.$refs.canvas;
      const ctx = canvas.getContext('2d');
      ctx.beginPath();
      ctx.moveTo(event.pageX - canvas.offsetLeft, event.pageY - canvas.offsetTop);
    },
    drawing(event) {
      if (!this.isDrawing) return;
      const canvas = this.$refs.canvas;
      const ctx = canvas.getContext('2d');
      ctx.lineTo(event.pageX - canvas.offsetLeft, event.pageY - canvas.offsetTop);
      ctx.stroke();
    },
    stopDrawing() {
      this.isDrawing = false;
    },
    clearCanvas() {
      const canvas = this.$refs.canvas;
      const ctx = canvas.getContext('2d');
      ctx.clearRect(0, 0, canvas.width, canvas.height);
    },
    saveSignature() {
      const canvas = this.$refs.canvas;
      this.signatureData = canvas.toDataURL();
    }
  }
}
</script>

<style scoped>
canvas {
  border: 1px solid black;
}
</style>
Nach dem Login kopieren

In diesem Code definieren wir zunächst zwei Datenattribute, isDrawing und signaturData, um aufzuzeichnen, ob der Benutzer Signaturdaten zeichnet und speichert. In der startDrawing-Methode hören wir auf das Mausklickereignis, rufen den Kontext des Canvas-Elements ab und beginnen mit dem Zeichnen des Pfads. Bei der Zeichenmethode aktualisieren wir den Zeichenpfad in Echtzeit, bis die Maus losgelassen wird. In der Methode stopDrawing setzen wir isDrawing auf false, um das Zeichnen des Pfads zu stoppen. Die Methode „clearCanvas“ wird verwendet, um den Inhalt auf dem Canvas zu löschen. Die Methode saveSignature wandelt den Inhalt des Canvas in Base64-codierte Daten um und speichert sie in SignatureData.

2. Implementierung der Gestenerkennungsfunktion

Um die Gestenerkennungsfunktion zu implementieren, können wir Bibliotheken von Drittanbietern wie Hammer.js verwenden, um Berührungsereignisse zu verarbeiten, und mit Canvas zusammenarbeiten, um das Zeichnen und Erkennen von Gesten zu realisieren.

Installieren Sie zunächst die Hammer.js-Bibliothek im Projekt:

npm install hammerjs --save
Nach dem Login kopieren

Importieren Sie dann die Hammer.js-Bibliothek in die Vue-Komponente und verwenden Sie sie zur Verarbeitung von Gestenereignissen:

<template>
  <div>
    <h1>手势识别</h1>
    <canvas ref="canvas"></canvas>
    <button @click="recognizeGesture">识别</button>
  </div>
</template>

<script>
import Hammer from 'hammerjs';

export default {
  mounted() {
    const canvas = this.$refs.canvas;
    const ctx = canvas.getContext('2d');
    const mc = new Hammer(canvas);

    mc.get('swipe').set({ direction: Hammer.DIRECTION_ALL });

    mc.on('swiperight swipeleft swipeup swipedown', function (event) {
      ctx.clearRect(0, 0, canvas.width, canvas.height);
      ctx.fillText(event.type, canvas.width / 2, canvas.height / 2);
    });
  }
}
</script>

<style scoped>
canvas {
  border: 1px solid black;
}
</style>
Nach dem Login kopieren

In diesem Code importieren wir zuerst Hammer.js Bibliothek, erstellen Sie ein Hammer-Objekt in der gemounteten Hook-Funktion der Vue-Komponente und geben Sie den Gestentyp an, der erkannt werden muss. Dann verwenden wir die mc.on-Methode, um auf Gestenereignisse zu warten, und löschen in der entsprechenden Rückruffunktion den Inhalt auf der Leinwand und zeichnen den Gestentyp.

Fazit:
Durch die Kombination von Vue.js- und Canvas-Elementen können wir handschriftliche Signatur- und Gestenerkennungsfunktionen problemlos implementieren. Die handschriftliche Signaturfunktion kann Benutzern eine intuitivere und natürlichere Möglichkeit zum Unterschreiben bieten, während die Gestenerkennungsfunktion Benutzern eine freiere und intuitivere Art der Interaktion bieten kann. Ich hoffe, dieser Artikel ist hilfreich für Sie. Vielen Dank fürs Lesen!

Referenzmaterialien:

  1. Offizielle Vue-Dokumentation: https://vuejs.org/
  2. Offizielle Canvas-Dokumentation: https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API
  3. Hammer .js offizielle Dokumentation: https://hammerjs.github.io/

Das obige ist der detaillierte Inhalt vonVue und Canvas: So implementieren Sie handschriftliche Signatur- und Gestenerkennungsfunktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage