Heim  >  Artikel  >  Web-Frontend  >  Wie zoomt man in HTML5 einen Canvas-Kontext auf den Mauszeiger?

Wie zoomt man in HTML5 einen Canvas-Kontext auf den Mauszeiger?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-24 18:47:04564Durchsuche

How do you Zoom a Canvas Context to the Mouse Cursor in HTML5?

Zoomen des Canvas-Kontexts auf den Mauszeiger

Bei einem HTML5-Canvas-Projekt, bei dem das Zoomen von Bildern mithilfe des Scrollrads erforderlich ist, kann es sein, dass Sie auf die Herausforderung stoßen Zoomen in Richtung des Cursors, ähnlich der Funktionalität in Google Maps. Um diesen Effekt zu erzielen, ist eine Reihe von Berechnungen erforderlich.

Berechnung der Bewegungen

  1. Bestimmung der Canvas-Kontexttransformation:

    • Übersetzen Sie den Canvas-Kontext um den Versatz des Cursors (pt.x, pt.y).
    • Skalieren Sie den Kontext mit ein Zoomfaktor (Faktor).
    • Übersetze den Kontext um das Negativ des Cursor-Versatzes zurück.
    <code class="js">ctx.translate(pt.x, pt.y);
    ctx.scale(factor, factor);
    ctx.translate(-pt.x, -pt.y);</code>
  2. Transformation der Cursorposition:

    • Die Koordinaten des Bildschirmbereichs des Cursors müssen für ein genaues Zoomen in die Koordinaten des transformierten Leinwandkontexts umgewandelt werden.

Beispieldemonstration

Besuchen Sie den folgenden Link für ein funktionierendes Beispiel, das Folgendes enthält:

  • Leinwand Bild zoomt zum Cursor
  • Drag-Unterstützung
  • Zum Vergrößern klicken, Umschalt-Klick zum Verkleinern
  • Scrollrad-Zoom

Demo: http://phrogz.net/tmp/canvas_zoom_to_cursor.html

Hinweis: In Safari kann sich das Zoomverhalten von Chrome oder Firefox unterscheiden.

Das obige ist der detaillierte Inhalt vonWie zoomt man in HTML5 einen Canvas-Kontext auf den Mauszeiger?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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