javascript - 如何在矩形内画一个圆而不显示正方形的突出部分
问题描述
我正在尝试在画布上的正方形内绘制一个圆圈,但我不希望从正方形伸出的圆圈部分在屏幕上绘制。为了更好地解释自己,我放了几张图片。
这就是我得到的:
但这就是我想要得到的:
为此,我尝试将“ctx.arc”用于弯曲部分,将“ctx.moveTo”+“ctx.lineTo”用于与矩形边缘重合的直线,但尽管我没有成功然而,这将是一个相当繁琐的代码,这就是我问你的原因,因为也许有更简单的方法可以做到这一点,我还没有找到它,也没有想到它。
为了更清楚地说明,我放的图像是示例,但我需要的是通用代码,因为圆可以是任意大小并且其位置中心位于正方形内的任何位置。
谢谢你。
祝一切顺利。
解决方案
你可以用它clip()
来切断圆圈的一部分。然后你根本不需要计算起点arc
。
代码片段
let ctx = document.getElementById("canvas").getContext("2d");
// Clip a rectangular area
ctx.rect(50, 50, 200, 200);
ctx.clip();
// Draw red rectangle after clip()
ctx.fillStyle = "red";
ctx.fillRect(0, 0, 150, 100);
ctx.fill();
ctx.fillStyle = "blue";
ctx.beginPath();
ctx.arc(70, 70, 120, 0, Math.PI * 2, true);
ctx.fill();
<canvas id="canvas" width="400" height="400"><canvas>
推荐阅读
- c - 如何在从 Fortran 中的并行区域调用的例程中并行化 C 向量化循环
- sql - Oracle v() 与 nv() 函数
- xamarin - 应用程序不会部署到 Android,但会编译
- javascript - 如何产生清晰的图像
- javascript - 自动提交存在于 javascript 中的表单
- windows - 我想使用 python 将 Windows 机器连接到 L2TP/IPsec vpn
- java - Android Studio 中的 Fragment 不稳定
- android - android studio 没有检测到我的手机,尽管 adb 检测到了
- python - 为 spacy 安装后端依赖项时出错
- laravel - 在laravel中单击html页面的链接打开pdf视图