菜单
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

HTML Canvas 裁剪


clip() 方法

clip() 方法将当前路径转换为当前的裁剪区域。

当一个区域被裁剪后,未来的绘制将只在裁剪区域内可见。

clip() 方法具有以下参数:

参数 描述
fillrule 一个点是在裁剪区域内部还是外部?可能的值:nonzero|evenodd
path 用作裁剪区域的路径

我们来看一些例子

示例

首先,创建一个圆形裁剪区域。然后绘制两个矩形;只有位于裁剪区域内的部分才是可见的。

您的浏览器不支持 HTML5 canvas 标签。
<script>
const canvas = document.getElementById("myCanvas");
const ctx = canvas.getContext("2d");

// 创建一个圆形裁剪区域
ctx.beginPath();
ctx.arc(100, 75, 70, 0, Math.PI * 2);
ctx.clip();

// 绘制两个矩形
ctx.fillStyle = "blue";
ctx.fillRect(0, 0, 300, 150);
ctx.fillStyle = "red";
ctx.fillRect(0, 0, 90, 90);
</script>
自己动手试一试 »

示例

首先,创建一个三角形裁剪区域。然后绘制两个矩形;只有位于裁剪区域内的部分才是可见的。

您的浏览器不支持 HTML5 canvas 标签。
<script>
const canvas = document.getElementById("myCanvas");
const ctx = canvas.getContext("2d");

// 创建一个三角形裁剪区域
ctx.beginPath();
ctx.moveTo(100,20);
ctx.lineTo(180,100);
ctx.lineTo(20,100);
ctx.lineTo(100,20);
ctx.clip();

// 绘制两个矩形
ctx.fillStyle = "blue";
ctx.fillRect(0, 0, 300, 150);
ctx.fillStyle = "red";
ctx.fillRect(0, 0, 90, 90);
</script>
自己动手试一试 »

示例

首先,创建一个圆形裁剪区域。然后将图像绘制到画布上;同样,只有位于裁剪区域内的部分才是可见的。

您的浏览器不支持 HTML5 canvas 标签。
<script>
const canvas = document.getElementById("myCanvas");
const ctx = canvas.getContext("2d");
const image = document.getElementById("scream");

image.addEventListener("load", (e) => {
  // 创建一个圆形裁剪区域
  ctx.beginPath();
  ctx.arc(110, 145, 75, 0, Math.PI * 2);
  ctx.clip();
  // 将图像绘制到画布上
  ctx.drawImage(image, 0, 0);
});
</script>
自己动手试一试 »

示例

首先,我们将两个矩形保存到 Path2D() 对象中,这将是裁剪区域。"evenodd" 规则在裁剪矩形相交的地方创建了一个孔:如果我们使用默认的 "nonzero" 规则,就不会有孔。

您的浏览器不支持 HTML5 canvas 标签。
<script>
const canvas = document.getElementById("myCanvas");
const ctx = canvas.getContext("2d");

// 创建裁剪路径(两个矩形)
let r = new Path2D();
r.rect(80,10, 45,130);
r.rect(40,50, 120,50);
ctx.clip(r, "evenodd");

// 绘制一个矩形
ctx.fillStyle = "red";
ctx.fillRect(0, 0, 300, 150);
</script>
自己动手试一试 »

示例

与上面的示例相同,但使用了 "nonzero" 规则(在裁剪矩形相交的地方不创建孔)。

您的浏览器不支持 HTML5 canvas 标签。
<script>
const canvas = document.getElementById("myCanvas");
const ctx = canvas.getContext("2d");

// 创建裁剪路径(两个矩形)
let r = new Path2D();
r.rect(80,10, 45,130);
r.rect(40,50, 120,50);
ctx.clip(r, "nonzero");

// 绘制一个矩形
ctx.fillStyle = "red";
ctx.fillRect(0, 0, 300, 150);
</script>
自己动手试一试 »

×

联系销售

如果您想将 W3Schools 服务用于教育机构、团队或企业,请发送电子邮件给我们
sales@w3schools.com

报告错误

如果您想报告错误,或想提出建议,请发送电子邮件给我们
help@w3schools.com

W3Schools 经过优化,旨在方便学习和培训。示例可能经过简化,以提高阅读和学习体验。教程、参考资料和示例会不断审查,以避免错误,但我们无法保证所有内容的完全正确性。使用 W3Schools 即表示您已阅读并接受我们的使用条款Cookie 和隐私政策

版权所有 1999-2024 Refsnes Data。保留所有权利。W3Schools 由 W3.CSS 提供支持