Heim Web-Frontend H5-Tutorial Beschneiden von Bereichsbildern mit der Methode „clip()' in HTML5 Canvas API_html5-Tutorial-Tipps

Beschneiden von Bereichsbildern mit der Methode „clip()' in HTML5 Canvas API_html5-Tutorial-Tipps

May 16, 2016 pm 03:52 PM
canvas html5 裁剪

Wenn wir Canvas zum Zeichnen eines Bildes verwenden, möchten wir oft nur einen Teil des Bildes behalten. Um diese Idee zu verwirklichen, können wir die Bildzuschneidefunktion der Canvas-API verwenden.
Die Bildzuschneidefunktion der Canvas-API bedeutet, dass bei Verwendung eines Pfads innerhalb der Leinwand nur das Bild des im Pfad enthaltenen Bereichs gezeichnet wird und das Bild außerhalb des Pfads nicht gezeichnet wird. Dies ähnelt ein wenig den Ebenenmasken in Flash.

Verwenden Sie die Methode „clip()“ ohne Parameter des Grafikkontexts, um die Bildzuschneidefunktion von Canvas zu implementieren. Diese Methode verwendet einen Pfad, um einen Beschneidungsbereich für die Leinwand festzulegen. Daher muss zunächst der Pfad erstellt werden. Rufen Sie nach Abschluss der Erstellung die Methode „clip()“ auf, um den Zuschneidebereich festzulegen.
Es ist zu beachten, dass der Zuschnitt auf der Leinwand nicht wiederhergestellt werden kann, was bedeutet, dass die Leinwand beim Zuschneiden kleiner wird, um sicherzustellen, dass sie immer noch die ursprünglich definierte Größe hat Durch die Leinwand muss beim Zeichnen am Ende auf save () und wiederherstellen () geachtet werden. Vor dem Zeichnen wird die Leinwand zunächst zugeschnitten. Es muss kein Bild sein, der Pfad kann auch eingefügt werden~

Schauen wir uns zunächst eine einfache Demo an.

JavaScript-CodeInhalt in die Zwischenablage kopieren
  1.   
  2. "zh">   
  3.   
  4.     "UTF-8">   
  5.     裁剪区域   
  6.        
  7.   
  8.   
  9. "canvas-warp">   
  10.     "canvas">   
  11.         你的浏览器居然不支持Canvas?!赶快换一个吧!!   
  12.        
  • <script> </span> </li> <li class="alt"> <span> window.onload = </span><span class="keyword">function</span><span>(){ </span> </li> <li> <span> </span><span class="keyword">var</span><span> canvas = document.getElementById(</span><span class="string">"canvas"</span><span>); </span> </li> <li class="alt"> <span>canvas.width = 800; </span> </li> <li> <span>canvas.height = 600; </span> </li> <li class="alt"> <span> </span><span class="keyword">var</span><span> context = canvas.getContext(</span><span class="string">"2d"</span><span> </span> </li> <li> <span> context.fillStyle = </span><span class="string">"#FFF"</span><span> </span> </li> <li class="alt"><span> context.fillRect(0,0,800,600); </span></li> <li> <span> </span> </li> <li class="alt"> <span>//Zeichne ein großes Quadrat auf dem Bildschirm </span><span class="comment"> </span> <span> </span> </li> context.fillStyle = <li> <span>"black"</span><span class="string">; </span><span> context.fillRect(10,10,200,200); </span> </li> context.save(); <li class="alt"> <span> </span> </li> context.beginPath(); <li> <span> </span> </li> <li class="alt"> <span> </span> </li> <li><span>//Schneiden Sie die Leinwand vom Punkt (0, 0) zum Quadrat von (50, 50) </span></li> <li class="alt"> <span> </span><span class="comment"> context.rect(0,0,50,50); </span> <span> </span> </li> context.clip(); <li> <span> </span> </li> <li class="alt"> <span> </span> </li> <li><span>//Roter Kreis </span></li> <li class="alt"> <span> </span><span class="comment"> context.beginPath(); </span> <span> </span> </li> context.StrokeStyle = <li><span>"red"</span></li>; <li class="alt"> <span> context.lineWidth = 5; </span> <span class="string"> </span><span> context.arc(100,100,100,0,Math.PI * 2,</span> </li>false<li> <span>); </span> </li> <li class="alt"> <span> </span><span class="keyword">//Voller Kreis </span><span> </span> </li> <li> <span> context.Stroke(); </span> <span class="comment"> </span><span> context.closePath(); </span> </li> <li class="alt"> <span> </span> </li> <li> <span> context.restore(); </span> </li> <li class="alt"> <span> </span> </li> <li><span> </span></li>//Schneiden Sie die gesamte Leinwand erneut aus <li class="alt"> <span> </span> </li> <li> <span> context.beginPath(); </span> <span class="comment"> </span><span> context.rect(0,0,500,500); </span> </li> context.clip(); <li class="alt"> <span> </span> </li> <li> <span> </span> </li> <li class="alt"><span>//Zeichne eine ungeschnittene blaue Linie </span></li> <li> <span> </span> </li> context.beginPath(); <li class="alt"> <span> </span><span class="comment"> context.StrokeStyle = </span><span>"blue"</span> </li>;<li> <span> context.lineWidth = 5; </span> </li> <li class="alt"> <span> context.arc(100,100,50,0,Math.PI * 2,</span><span class="keyword">false</span><span>); </span> </li> <li> <span> </span><span class="comment">//Voller Kreis </span><span> </span> </li> <li class="alt"> <span> context.Stroke(); </span> </li> <li> <span> context.closePath(); </span> </li> <li class="alt"> <span> }; </span> </li> <li> <span></script>
  • Laufergebnis:
    2016325102516578.jpg (850×500)

    Mit einer Mischung aus den Methoden save() und restart() können wir den Zeichenbereich begrenzen. Zuerst können wir die Methode rect() verwenden, um einen Bereich zu umgeben, den wir zeichnen möchten, und dann die Methode clip() verwenden, um den Bereich zuzuschneiden.

    Auf diese Weise wird unabhängig von den Vorgängen, die wir im Kontext ausführen, nur der begrenzte Teil angezeigt. Mit anderen Worten besteht die Funktion von clip() darin, den anzuzeigenden Bereich einzuschränken. Wenn wir den Bereich nicht mehr einschränken möchten, können wir mit der Methode „restore()“ herausspringen und den ursprünglichen Kontext weiter bearbeiten.
    Sehen Sie sich diesen Zuschnitt noch einmal an:
    2016325102545351.png (275×198)

    JavaScript-CodeInhalt in die Zwischenablage kopieren
    1. Funktion drawScreen() {
    2. var x = canvas.width / 2
    3. var y = canvas.height / 2
    4. var Radius = 75;
    5. var offset = 50;
    6. //Der zugeschnittene Bereich ist (x, y), ein Kreis mit einem Mittelpunktsradius von 75
    7. context.save();
    8. context.beginPath();
    9. context.arc(x, y, radius, 0, 2 * Math.PI,
    10. false
    11. ); context.clip();
    12.  
    13. // Zeichnen Sie zuerst einen blauen Bogen. Der Teil, der über den Zuschnitt hinausgeht, wird nicht angezeigt
    14. context.beginPath();
    15. context.arc(x – Offset, y – Offset, Radius, 0, 2 * Math.PI,
    16. false
    17. );
    18. context.fillStyle = 'blue'
    19. ;
    20. context.fill();
    21.  
    22. //Zeichnen Sie einen gelben Bogen und der Teil, der über den Zuschnitt hinausgeht, wird nicht angezeigt
    23. context.beginPath(); context.arc(x offset, y, radius, 0, 2 * Math.PI,
    24. false
    25. );
    26. context.fillStyle =
    27. 'gelb'; context.fill();
    28.  
    29. // Zeichnen Sie einen roten Bogen, und der Teil, der über den Zuschnitt hinausgeht, wird nicht angezeigt
    30. context.beginPath();
    31. context.arc(x, y offset, radius, 0, 2 * Math.PI, false);
    32. context.fillStyle =
    33. 'red'
    34. ;
    35. context.fill();
    36.  /*
    37. * Die Methode „restore()“ kehrt zum ursprünglichen Zustand des Kontexts zurück, in diesem Fall zum Zustand vor „clip()“.
    38. * Sie können die context.beginPath()-Methode entfernen und versuchen, was passiert.
    39. */
    40. context.restore();
    41. context.beginPath();
    42. context.arc(x, y, rayon, 0, 2 * Math.PI, false
    43. );
    44. context.lineWidth = 10;
    45. context.StrokeStyle = 'bleu'
    46. ;
    47. contexte.AVC();
    48. }


    Je souligne encore une fois que la forme générale d'appel de la fonction de recadrage est

    save();
    clip();
    restore();
    sont appelés dans cet ordre.

    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

    Heiße KI -Werkzeuge

    Undresser.AI Undress

    Undresser.AI Undress

    KI-gestützte App zum Erstellen realistischer Aktfotos

    AI Clothes Remover

    AI Clothes Remover

    Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

    Undress AI Tool

    Undress AI Tool

    Ausziehbilder kostenlos

    Clothoff.io

    Clothoff.io

    KI-Kleiderentferner

    Video Face Swap

    Video Face Swap

    Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

    Heiße Werkzeuge

    Notepad++7.3.1

    Notepad++7.3.1

    Einfach zu bedienender und kostenloser Code-Editor

    SublimeText3 chinesische Version

    SublimeText3 chinesische Version

    Chinesische Version, sehr einfach zu bedienen

    Senden Sie Studio 13.0.1

    Senden Sie Studio 13.0.1

    Leistungsstarke integrierte PHP-Entwicklungsumgebung

    Dreamweaver CS6

    Dreamweaver CS6

    Visuelle Webentwicklungstools

    SublimeText3 Mac-Version

    SublimeText3 Mac-Version

    Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

    Tabellenrahmen in HTML Tabellenrahmen in HTML Sep 04, 2024 pm 04:49 PM

    Anleitung zum Tabellenrahmen in HTML. Hier besprechen wir verschiedene Möglichkeiten zum Definieren von Tabellenrändern anhand von Beispielen für den Tabellenrand in HTML.

    Verschachtelte Tabelle in HTML Verschachtelte Tabelle in HTML Sep 04, 2024 pm 04:49 PM

    Dies ist eine Anleitung für verschachtelte Tabellen in HTML. Hier diskutieren wir anhand der entsprechenden Beispiele, wie man eine Tabelle innerhalb der Tabelle erstellt.

    HTML-Rand links HTML-Rand links Sep 04, 2024 pm 04:48 PM

    Anleitung zum HTML-Rand links. Hier besprechen wir einen kurzen Überblick über HTML margin-left und seine Beispiele sowie seine Code-Implementierung.

    HTML-Tabellenlayout HTML-Tabellenlayout Sep 04, 2024 pm 04:54 PM

    Leitfaden zum HTML-Tabellenlayout. Hier besprechen wir die Werte des HTML-Tabellenlayouts zusammen mit den Beispielen und Ausgaben im Detail.

    HTML-Eingabeplatzhalter HTML-Eingabeplatzhalter Sep 04, 2024 pm 04:54 PM

    Leitfaden für HTML-Eingabeplatzhalter. Hier besprechen wir die Beispiele für HTML-Eingabeplatzhalter zusammen mit den Codes und Ausgaben.

    Text in HTML verschieben Text in HTML verschieben Sep 04, 2024 pm 04:45 PM

    Anleitung zum Verschieben von Text in HTML. Hier besprechen wir eine Einführung, wie Marquee-Tags funktionieren, mit Syntax und Beispielen für die Implementierung.

    HTML-geordnete Liste HTML-geordnete Liste Sep 04, 2024 pm 04:43 PM

    Leitfaden zur HTML-geordneten Liste. Hier besprechen wir auch die Einführung von HTML-geordneten Listen und Typen sowie deren Beispiele

    HTML-Onclick-Button HTML-Onclick-Button Sep 04, 2024 pm 04:49 PM

    Anleitung zum HTML-OnClick-Button. Hier diskutieren wir deren Einführung, Funktionsweise, Beispiele und Onclick-Events in verschiedenen Veranstaltungen.

    See all articles