In diesem Artikelbeispiel wird der spezifische Code der Vue Canvas-Zeichnungszeitleiste als Referenz bereitgestellt. Der spezifische Inhalt ist wie folgt Ich studiere derzeit die Zeitleiste für das Zeichnen auf Leinwand. Hier ist der Code direkt. Ich hoffe, dass es Ihnen helfen kann, ihn weiterzugeben. Der Effekt ist wie folgt: Der Code lautet wie folgt. Sie können ihn in das Vue-Projekt kopieren und direkt in der Vorschau anzeigen. <Vorlage> <div> <canvas id="Zeitleiste" width="1200" height="27"></canvas> </div> </Vorlage> <Skript> Standard exportieren { Name: 'pathwaytrack', Daten() { zurückkehren { Bildschirmbreite: Dokument.Textkörper.Clientbreite } }, montiert() { lass das = dies das.carveTimeScale(1200, 1, 10, 0, 10) Leinwandfarbe = "#999999" lass initTime = 12000 setzeIntervall(() => { initTime += 1000 that.carveTimeScale(1200, 1, 10, initTime, 10) }, 1000); }, Methoden: { /** * Pixelskala teilen* width: Breite in ms: Anzahl der Millisekunden für eine kleine Skala pxMs: 10 Pixel für eine kleine Skala pageShowStartTime: Anfangszeit (Millisekunden) eine große Intervalldauer (Sekunden) */ carveTimeScale(Breite, ms, pxMs, SeitenanzeigeStartzeit, Intervallzeit) { let canvasId = document.getElementById('Zeitleiste') lass ctx = canvasId.getContext('2d') ctx.clearRect(0, 0, 1200, 60) ctx.fillStyle = "#999999" // Um eine anormale Anzeige auf Apple 2X-Bildschirmen zu verhindern // Um eine anormale Anzeige auf Apple 2X-Bildschirmen zu verhindern var getPixelRatio = function (context) { var backingStore = Kontext.backingStorePixelRatio || Kontext.webkitBackingStorePixelRatio || Kontext.mozBackingStorePixelRatio || Kontext.msBackingStorePixelRatio || Kontext.oBackingStorePixelRatio || Kontext.backingStorePixelRatio || 1 Rückgabewert (window.devicePixelRatio || 1) / backingStore } let-Verhältnis = getPixelRatio(ctx) let msOffset = this.startOffsetTime(pageShowStartTime, ms) // Start-Offset-Zeit ms let pxOffset = msOffset / 1000 * pxMs // Start-Offset-Distanz px let leftDistance = 0 // Abstand nach links let leftDistanceTime = 0 // Zeit nach links let beginX = 0 lass beginY = 0 für (sei i = 0; i < Breite / (ms * pxMs); i++) { leftDistance = pxOffset + i * (ms * pxMs) // Distanz = Start-Offset-Distanz + Anzahl der Raster * px/Raster leftDistanceTime = pageShowStartTime + msOffset + i * ms // Zeit = linke Startzeit + Offset-Zeit + Anzahl der Raster * ms beginX = pxOffset + i * (ms * pxMs) Leinwandfarbe lassen let showTime = pageShowStartTime + beginX / pxMs * 1000 wenn (showTime % (Intervallzeit * 1000) === 0) { beginY = 0 ctx.font = "12px Arial" ctx.fillText(diese.changeTime(showTime, 1), beginX + 10, 22) Leinwandfarbe = "#999999" ctx.fillStyle = "#B1B1B1" this.drawLine(linkerAbstand, beginY, linkerAbstand, 20, Leinwandfarbe, 1) } sonst wenn (showTime % Intervallzeit == 0) { beginY = 0 Leinwandfarbe = "#999999" this.drawLine(linkerAbstand, beginY, linkerAbstand, 10, Leinwandfarbe, 1) } } }, /** * Linien entsprechend den übergebenen Parametern zeichnen */ drawLine(beginX, beginY, endX, endY, Farbe, Breite) { let canvasId = document.getElementById('time_line'); Lassen Sie ctx = canvasId.getContext('2d'); ctx.beginPath(); ctx.moveTo(beginnX, beginY); ctx.lineTo(endeX, endY); ctx.strokeStyle = Farbe; ctx.lineWidth = Breite; ctx.stroke(); }, /** * Der Offset der linken Startzeit, zurückgegeben in ms */ startOffsetTime(Zeitstempel, Schritt) { let remainder = Zeitstempel % Schritt Rest zurückgeben? Schritt - Rest: 0 }, /** *Rückkehrzeit */ changeTime(Zeit, Zahl) { lass Stunde = 0 let minute = 0 sei Sekunde = 0 Sekunde = Zeit / 1000 wenn (Sekunde >= 3600) { Minute = (Sekunde - (Sekunde % 60)) / 60 Stunde = parseInt((Minute / 60).toString()) Minute = Minute % 60 /* eslint-deaktivieren */ Stunde >= 10 ? Stunde : Stunde = '0' + Stunde Minute >= 10? Minute : Minute = '0' + Minute Sekunde = Sekunde % 60 Sekunde >= 10? Sekunde : Sekunde = '0' + Sekunde /* eslint-aktivieren */ returniere Stunde + ':' + Minute + ':' + Sekunde } if (Sekunde < 3600 && Sekunde >= 60) { Stunde = '00' Minute = parseInt((Sekunde / 60).toString()) /* eslint-deaktivieren */ Minute >= 10? Minute : Minute = '0' + Minute Sekunde = Sekunde % 60 Sekunde >= 10? Sekunde : Sekunde = '0' + Sekunde /* eslint-aktivieren */ returniere Stunde + ':' + Minute + ':' + Sekunde } wenn (Sekunde < 60) { Stunde = '00' Minute = '00' Sekunde = parseInt(Sekunde) /* eslint-deaktivieren */ Sekunde >= 10? Sekunde : Sekunde = '0' + Sekunde /* eslint-aktivieren */ returniere Stunde + ':' + Minute + ':' + Sekunde } } } } </Skript> <style lang="less" scoped> Leinwand { Hintergrund: schwarz; } </Stil> Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: SQL-Interviewfrage: Ermitteln Sie die Summe der Zeitunterschiede (ignorieren Sie Duplikate)
>>: So ändern Sie schnell das Root-Passwort unter CentOS8
Vorwort Ich habe gerade einen neuen VPS gekauft. ...
Einführung: Wenn wir MySQL zum Erstellen einer Ta...
Aus der Tomcat-Konfigurationsdatei können wir ers...
<br />Die Zugriffsgeschwindigkeit einer Webs...
Die Drag-Funktion wird hauptsächlich verwendet, u...
Inhaltsverzeichnis 1. Einleitung: In diesem Fall ...
MySql herunterladen 1. Öffnen Sie die offizielle ...
Konfiguration Vorwort Projektaufbau: basierend au...
1. Erstellen Sie mit der Methode Object.create() ...
Was ist ein Ansichtsfenster? Mobile Browser platzi...
Geben Sie den laufenden Container ein # Geben Sie...
Viele Internetnutzer fragen sich oft, warum ihre W...
Linux: Linux-Version 3.10.0-123.9.3.el7.x86_64 Ng...
Um nach RocketMQ-Images zu suchen, können Sie auf...
1. CSS-Navigationsleiste (1) Funktion der Navigat...