【发布时间】:2018-10-14 11:46:06
【问题描述】:
我试图在画布中围绕多个形状绘制一个框,以说明这些形状像一个组一样相关。 尝试如下:
var ctx = c.getContext("2d"),
radius = 10,
rect = c.getBoundingClientRect(),
ctx.fillText("Draw something here..", 10, 10);
ctx.fillStyle = "red";
ctx.beginPath();
ctx.arc(250, 300, radius, 0, 6.28);
ctx.fill();
ctx.fillStyle = "yellow";
ctx.beginPath();
ctx.arc(200, 100, radius, 0, 10.28);
ctx.fill();
ctx.fillStyle = "brown";
ctx.beginPath();
ctx.arc(350, 210, radius, 0, 10.28);
ctx.fill();
var x = (250+200+350)/3;
var y = (300+100+210)/3;
var radius = Math.sqrt((x1*x1)+(y1*y1));
var _minX = x - radius;
var _minY = y - radius;
var _maxX = x + radius;
var _maxY = y + radius;
ctx.rect(_minX,_minY,(_maxX-_minX+2),(_maxY-_minY+2));
ctx.stroke();
但它没有正确绘制。 How to get bounding box coordinates for canvas content? 此链接仅说明路径,不适用于现有形状。 下面是我想要绘制的图像:
【问题讨论】:
-
究竟是什么问题似乎有效?
-
不 - 那个图像是我想要的,而不是我得到的结果
-
您的代码没有反映您想要绘制的形状,因此很难为您的情况提供合适的解决方案。但基本上,您必须将所有形状的 BBox 存储在一个数组中,然后简单地获取所有这些 BBox 的 min_x、max_x、min_y、max_y。这将是您的 group-rect 的四个角。
-
如何获得每个形状的 BBox?对于所有这些形状,我只有 x,y
-
您能帮我解决问题或提供任何参考吗?