【发布时间】:2019-09-11 18:46:49
【问题描述】:
我在画布中添加了多个可能相互碰撞的矩形。外部笔划应显示在两个矩形的外部,或者应将矩形形状合并为一个,从而产生预期的结果。
见下图
它必须被剪切,因为它会在画布下显示内容。查看带有背景图片的实时示例:https://jsfiddle.net/0qpgf5un/
在下面的代码示例中,矩形被添加到彼此之上,正如您在图片的第一个示例中看到的那样。
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var offsetX = 150;
var offsetY = 150;
var w = 200;
var h = 100;
ctx.fillStyle = "red";
ctx.rect(0, 0, 600, 600);
ctx.fill();
ctx.clearRect(offsetX,offsetY, w, h);
ctx.strokeRect(offsetX, offsetY, w, h);
ctx.clearRect(offsetX-50,offsetY+50, w, h);
ctx.strokeRect(offsetX-50, offsetY+50, w, h);
有没有办法在不编写每条路径的复杂计算的情况下实现它,因为矩形的碰撞可能是无意的和多样化的?
编辑: 我想要实现的是类似 youtube 的反馈表单中的功能,在编辑屏幕截图时,您可以突出显示项目,然后合并边框。
【问题讨论】:
-
您是否尝试过使用多边形填充? stackoverflow.com/questions/4839993/…
-
谢谢,但就像我在问题中提到的那样,我不想计算每条路径,因为矩形可能会有所不同。
-
是的,我明白了,我添加了一个简单的解决方案
-
如果您担心保留笔画宽度,我会考虑到这一点...
标签: javascript canvas