Effektbild:
Ideen: (1) Erstellen Sie einen Zeichenbereich auf der Leinwand // Vorlage <div Klasse="Canvas-Container"> <canvas ref="canvas" width="300" height="200">Ihr Browser unterstützt Canvas nicht, bitte aktualisieren Sie Ihren Browser. </Leinwand> </div> // scss .canvas-container { Hintergrund: #fafafa; Leinwand { Hintergrund: #fff; Rand: 1px durchgezogen #000; } } (2) Ermitteln der anfänglichen horizontalen und vertikalen Koordinaten Daten() { zurückkehren { initX: 0, // anfängliche horizontale Koordinate initY: 0, // anfängliche vertikale Koordinate} }, montiert() { dies.initBound() }, Methoden: { // Canvas-Position initialisieren initBound() { let bound = this.$refs.canvas.getBoundingClientRect() dies.initX = gebunden.x dies.initY = gebunden.y } } (3) Fügen Sie Mausklickereignisse, Bewegungsereignisse und Freigabeereignisse hinzu // Vorlage <div Klasse="Canvas-Container"> <canvas ref="canvas" width="300" height="200" @mousedown="onMouseDown" @mousemove="onMouseMove" @mouseup="onMouseUp">Ihr Browser unterstützt Canvas nicht, bitte aktualisieren Sie Ihren Browser. </Leinwand> </div> // Skript Daten() { zurückkehren { // ... lastX: 0, // vorherige horizontale KoordinatelastY: 0, // vorherige vertikale KoordinateisHandWrite: false, // ob mit der Handschrift begonnen werden sollpointsXY: [], // einzelner StrichallPointsXY: [], // alle Striche} }, Methoden: { beiMausUnten(e) { dies.pointsXY = [] lass cx = e.clientX - this.initX lass cy = e.clientY - this.initY dies.letztesX = cx dies.letztesY = cy dies.pointsXY.push(cx) dies.pointsXY.push(cy) this.isHandWrite = true }, beiMausbewegung(e) { wenn (dies.istHandWrite) { lass cx = e.clientX - this.initX lass cy = e.clientY - this.initY dies.pointsXY.push(cx - dies.lastX) dies.pointsXY.push(cy - dies.lastY) // Holen Sie sich das 2D-Kontextobjekt let ctx = this.$refs.canvas.getContext('2d') // Einen neuen Pfad erstellen ctx.beginPath() ctx.strokeStyle = "#000" ctx.fillStyle = "#000" ctx.Linienbreite = 8 ctx.lineCap = "rund" ctx.moveTo(dieses.letztesX, dieses.letztesY) ctx.lineTo(cx, cy) ctx.stroke() dies.letztesX = cx dies.letztesY = cy } }, beiMausHoch(e) { wenn (dies.istHandWrite) { this.isHandWrite = false dies.allePunkteXY.push(dies.punkteXY.join(',')) this.queryText() // Text erkennen} }, } (4) Fügen Sie eine Texterkennungsschnittstelle und eine JSONP-Rückruffunktion hinzu. Vue-JSONP wird für domänenübergreifende Anforderungen verwendet. Informationen zur spezifischen Verwendung finden Sie unter Verwendung von JSONP in Vue. // Skript Daten() { zurückkehren { // ... write_result: [], //Gibt ähnliche Wörter zurück} }, montiert() { // ... lass _dies = dies // JSONP-Rückruffunktion hinzufügen, qq-Eingabemethode spezifisch window['QQShuru'] = { HWPanel: ajax_callback: Funktion (res) { _this.write_result = res.cand }, }, } }, Methoden: { AbfrageText() { let track_str = this.allPointsXY.join(',eb,') dies.$jsonp( `https://handwriting.shuru.qq.com/cloud/cgi-bin/cloud_hw_pub.wsgi?track_str=${track_str}&cmd=0` ).catch(err => { console.log(fehler) }) }, } (5) Fügen Sie abschließend eine Schaltfläche zum Neuschreiben hinzu, um die Leinwand zu löschen. // Vorlage <div> <button @click="onReload">Umschreiben</button> </div> // Skript beimNeuladen() { wenn (!this.$refs.canvas) return dies.pointsXY = [] dies.allePunkteXY = [] lass ctx = dies.$refs.canvas.getContext('2d') ctx.clearRect(0, 0, 300, 200) } Der vollständige Code lautet wie folgt: <Vorlage> <div id="app"> <div Klasse="Canvas-Container"> <canvas ref="canvas" width="300" height="200" @mousedown="onMouseDown" @mousemove="onMouseMove" @mouseup="onMouseUp">Ihr Browser unterstützt Canvas nicht, bitte aktualisieren Sie Ihren Browser. </Leinwand> </div> <div>[{{ letztesX + ', ' + letztesY }}]</div> <div> <button @click="onReload">Umschreiben</button> </div> <div>Gibt ähnliche Wörter zurück: {{ write_result }}</div> </div> </Vorlage> <Skript> Standard exportieren { Name: "App", Daten() { zurückkehren { initX: 0, // Anfangshorizontale KoordinateinitY: 0, // Anfangsvertikale KoordinatelastX: 0, // Vorherige horizontale KoordinatelastY: 0, // Vorherige vertikale KoordinateisHandWrite: false, // Ob mit der Handschrift begonnen werden sollpointsXY: [], // Einzelner StrichallPointsXY: [], // Alle Strichewrite_result: [], // Gibt ähnliche Zeichen zurück} }, montiert() { dies.initBound() lass _dies = dies // JSONP-Rückruffunktion hinzufügen, qq-Eingabemethode spezifisch window['QQShuru'] = { HWPanel: ajax_callback: Funktion (res) { _this.write_result = res.cand }, }, } }, Methoden: { // Canvas-Position initialisieren initBound() { let bound = this.$refs.canvas.getBoundingClientRect() dies.initX = gebunden.x dies.initY = gebunden.y }, beiMausUnten(e) { console.log('onDown', e) dies.pointsXY = [] lass cx = e.clientX - this.initX lass cy = e.clientY - this.initY dies.letztesX = cx dies.letztesY = cy dies.pointsXY.push(cx) dies.pointsXY.push(cy) this.isHandWrite = true }, beiMausbewegung(e) { wenn (dies.istHandWrite) { lass cx = e.clientX - this.initX lass cy = e.clientY - this.initY dies.pointsXY.push(cx - dies.lastX) dies.pointsXY.push(cy - dies.lastY) // Holen Sie sich das 2D-Kontextobjekt let ctx = this.$refs.canvas.getContext('2d') // Einen neuen Pfad erstellen ctx.beginPath() ctx.strokeStyle = "#000" ctx.fillStyle = "#000" ctx.Linienbreite = 8 ctx.lineCap = "rund" ctx.moveTo(dieses.letztesX, dieses.letztesY) ctx.lineTo(cx, cy) ctx.stroke() dies.letztesX = cx dies.letztesY = cy } }, beiMausHoch(e) { wenn (dies.istHandWrite) { this.isHandWrite = false dies.allePunkteXY.push(dies.punkteXY.join(',')) dieser.queryText() } }, // Text erkennen queryText() { let track_str = this.allPointsXY.join(',eb,') dies.$jsonp( `https://handwriting.shuru.qq.com/cloud/cgi-bin/cloud_hw_pub.wsgi?track_str=${track_str}&cmd=0` ).catch(err => { console.log(fehler) }) }, beimNeuladen() { wenn (!this.$refs.canvas) return dies.pointsXY = [] dies.allePunkteXY = [] lass ctx = dies.$refs.canvas.getContext('2d') ctx.clearRect(0, 0, 300, 200) }, }, } </Skript> <style lang="scss"> #app { Schriftfamilie: Avenir, Helvetica, Arial, serifenlos; -webkit-font-smoothing: Kantenglättung; -moz-osx-font-smoothing: Graustufen; Textausrichtung: zentriert; Farbe: #2c3e50; .canvas-container { Hintergrund: #fafafa; Leinwand { Hintergrund: #fff; Rand: 1px durchgezogen #000; } } } </Stil> Dies ist das Ende dieses Artikels über Vue, das Canvas-Handschrifteingaben verwendet, um Chinesisch zu erkennen. Weitere relevante Vue-Inhalte, die Canvas-Handschrifteingaben verwenden, um Chinesisch zu erkennen, finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Das Textdesign einer Webseite sollte aussehen wie die Kleidung von intelligenten Mädchen
>>: So übergeben Sie Parameter über CSS an JS
Standardmäßig akzeptiert MySQL das Einfügen von 0...
Inhaltsverzeichnis Struktur auswählen Schleifenst...
Inhaltsverzeichnis Was ist Vuex? Fünf Eigenschaft...
1. Komplexität des Front-End-Engineerings Wenn wi...
Die Javascript-Funktion zum Konvertieren von <t...
In diesem Artikelbeispiel wird der spezifische Co...
1. Javascript kehrt zur vorherigen Seite zurück hi...
Inhaltsverzeichnis Was ist NULL Zwei Arten von NU...
Inhaltsverzeichnis Die Rolle von cloneElement Anw...
Was ist HTTP? Wenn wir eine Website durchsuchen m...
Um die Leistung von MySQL anzupassen und den Dien...
Inhaltsverzeichnis Vorwort Array.Prototyp.enthält...
<!--[if IE 6]> Nur IE6 kann erkennen <![e...
Beim Entwerfen eines H5-Layouts werden Sie normal...
Inhaltsverzeichnis Linux - Dateideskriptor, Datei...