当前位置: 首页 > news >正文

【第2章 绘制】2.15 剪辑区

文章目录

  • 前言
  • 一个简单的裁剪区域
  • 创建复杂的裁剪区域


前言

clip() 方法用于将当前或给定路径转换为当前裁剪区域。前面的裁剪区域(如果有的话)将与当前路径或给定路径相交,从而创建新的裁剪区域。

备注:
请注意,裁剪区域仅由添加到路径中的形状构成。它不适用于直接绘制到画布上的形状基元,比如 fillRect()。相反,在调用 clip() 前,你需要使用 rect() 将一个矩形形状添加到路径中。
裁剪路径不能直接撤销。在调用 clip() 前,你必须使用 save() 保存画布状态,并在裁剪区域完成绘制后使用 restore() 还原。


一个简单的裁剪区域

此示例使用 clip() 方法根据圆弧的形状创建一个裁剪区域。然后绘制了两个矩形;只有在裁剪区域内的部分才会被渲染。

const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");// 创建圆形裁剪区域
ctx.beginPath();
ctx.arc(100, 75, 50, 0, Math.PI * 2);
ctx.clip();// 绘制被裁剪的内容
ctx.fillStyle = "blue";
ctx.fillRect(0, 0, canvas.width, canvas.height);
ctx.fillStyle = "orange";
ctx.fillRect(0, 0, 100, 100);

在这里插入图片描述


创建复杂的裁剪区域

此示例使用了两个路径,一个矩形和一个正方形,来创建一个复杂的裁剪区域。clip() 方法被调用两次,第一次使用 Path2D 对象将当前裁剪区域设置为圆形,然后再次调用以将圆形裁剪区域与一个正方形相交。最终的裁剪区域是圆形和正方形的交集形状。

const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");// 创建两个裁剪路径
let circlePath = new Path2D();
circlePath.arc(150, 75, 75, 0, 2 * Math.PI);
let squarePath = new Path2D();
squarePath.rect(85, 10, 130, 130);// 将裁剪区域设置为圆形
ctx.clip(circlePath);
// 将裁剪区域设置为圆形和正方形的交集
ctx.clip(squarePath);// 绘制被裁剪的内容
ctx.fillStyle = "blue";
ctx.fillRect(0, 0, canvas.width, canvas.height);

在这里插入图片描述


相关文章:

  • 影刀RPA-操作网站基础信息
  • 3D Tiles高级样式设置与条件渲染(4)
  • 创建型设计模式之Prototype(原型)
  • 「Python教案」通用序列操作
  • Spring Boot 读取.env文件获取配置
  • Java设计模式之解释器模式详解
  • MySQL:零基础入门(狂神版)
  • Prompt:开源库license的分类名称、说明、适应范围
  • RuoYi前后端分离项目集成magic-api,并继承RuoYi的权限认证体系来管理magic-api
  • 在 Kubernetes 上部署 Python 微服务:高效架构与服务发现实践
  • 2025超全面Redis笔记!!!
  • 小提琴图绘制-Graph prism
  • 战略3.4 - 研究与开发战略、生产运营战略
  • 软件包管理系统的架构与生态机制
  • CSS Animation 详解
  • css设置动态数值:clamp函数
  • 基于Doc2Vec的Markdown文档分类实战:从预处理到模型评估
  • 计算机网络(4)——网络层
  • 【开源工具】跳过网页APP禁止粘贴限制:自动输入键盘模拟工具
  • 提升 GitHub Stats 的 6 个关键策略
  • 专业网站建设品牌策划方案/上海网站搜索排名优化哪家好
  • 厚街网站仿做/云优客seo排名公司
  • 室内设计培训网站/营销方案怎么写?
  • 免费网站推广咱们做/推广怎么做
  • 音乐网站后台模板/网络营销工具体系
  • 网络推广员为什么做不长/重庆seo招聘