Canvas kesish


ULASHISH

clip() metodi

clip() metodi joriy yo‘lni joriy kesish sohasiga (clipping region) aylantiradi.

Soha kesilgach, keyingi chizmalar faqat kesilgan soha ichida ko‘rinadi.

clip() metodi quyidagi parametrlarga ega:

Parametr Tavsif
fillrule Nuqta kesish sohasining ichidami yoki tashqarisidami? Mumkin bo‘lgan qiymatlar: nonzero|evenodd
path Kesish sohasi sifatida ishlatiladigan yo‘l

Keling, bir nechta misolni ko‘rib chiqamiz:

Misol

Avval aylana shaklidagi kesish sohasini yarating. So‘ngra ikkita to‘rtburchak chizing; ularning faqat kesish sohasi ichida joylashgan qismlarigina ko‘rinadi:

Your browser does not support the HTML5 canvas tag.
<script> const canvas = document.getElementById("myCanvas"); const ctx = canvas.getContext("2d"); // Create a circular clipping region ctx.beginPath(); ctx.arc(100, 75, 70, 0, Math.PI * 2); ctx.clip(); // Draw two rectangles ctx.fillStyle = "blue"; ctx.fillRect(0, 0, 300, 150); ctx.fillStyle = "red"; ctx.fillRect(0, 0, 90, 90); </script>
O‘zingiz sinab ko‘ring »

Misol

Avval uchburchak shaklidagi kesish sohasini yarating. So‘ngra ikkita to‘rtburchak chizing; ularning faqat kesish sohasi ichida joylashgan qismlarigina ko‘rinadi:

Your browser does not support the HTML5 canvas tag.
<script> const canvas = document.getElementById("myCanvas"); const ctx = canvas.getContext("2d"); // Create a triangle-shaped clipping region ctx.beginPath(); ctx.moveTo(100,20); ctx.lineTo(180,100); ctx.lineTo(20,100); ctx.lineTo(100,20); ctx.clip(); // Draw two rectangles ctx.fillStyle = "blue"; ctx.fillRect(0, 0, 300, 150); ctx.fillStyle = "red"; ctx.fillRect(0, 0, 90, 90); </script>
O‘zingiz sinab ko‘ring »

Misol

Avval aylana shaklidagi kesish sohasini yarating. So‘ngra canvas’ga rasm chizing; bu safar ham faqat kesish sohasi ichida joylashgan qismlargina ko‘rinadi:

Your browser does not support the HTML5 canvas tag.
<script> const canvas = document.getElementById("myCanvas"); const ctx = canvas.getContext("2d"); const image = document.getElementById("scream"); image.addEventListener("load", (e) => {   // Create a circular clipping region   ctx.beginPath();   ctx.arc(110, 145, 75, 0, Math.PI * 2);   ctx.clip();   // Draw image onto canvas   ctx.drawImage(image, 0, 0); }); </script>
O‘zingiz sinab ko‘ring »

Misol

Avval ikkita to‘rtburchakni Path2D() obyektiga saqlaymiz — bu kesish sohasi bo‘ladi. "evenodd" qoidasi kesish to‘rtburchaklari kesishgan joyda teshik hosil qiladi. Agar standart "nonzero" qoidasidan foydalanganimizda, teshik bo‘lmas edi:

Your browser does not support the HTML5 canvas tag.
<script> const canvas = document.getElementById("myCanvas"); const ctx = canvas.getContext("2d"); // Create clipping path (two rectangles) let r = new Path2D(); r.rect(80,10, 45,130); r.rect(40,50, 120,50); ctx.clip(r, "evenodd"); // Draw a rectangle ctx.fillStyle = "red"; ctx.fillRect(0, 0, 300, 150); </script>
O‘zingiz sinab ko‘ring »

Misol

Yuqoridagi misolning o‘zi, lekin "nonzero" qoidasi bilan (kesish to‘rtburchaklari kesishgan joyda teshik hosil qilmaydi):

Your browser does not support the HTML5 canvas tag.
<script> const canvas = document.getElementById("myCanvas"); const ctx = canvas.getContext("2d"); // Create clipping path (two rectangles) let r = new Path2D(); r.rect(80,10, 45,130); r.rect(40,50, 120,50); ctx.clip(r, "nonzero"); // Draw a rectangle ctx.fillStyle = "red"; ctx.fillRect(0, 0, 300, 150); </script>
O‘zingiz sinab ko‘ring »

W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!