如何将 fabric.js 路径的边连接到圆?
How to join an edge of fabric.js Path to a circle?
我在 fabric.js website 中找到了二次曲线的示例。
我想用二次曲线的一条边连接一个 fabric.js 圆。有没有办法做到这一点。如果我将代表其中一条边的点用一个圆分组,则该点在移动圆时会与路径分开
尝试一些东西后更新
有两个元素 - 一个是圆,另一个是二次曲线
根据以下 link 的提示:
为测试编写了以下代码:
一个。用户点击圆圈(因此它变成 activeObject)。之后,下面的函数就是运行:
join_obj1 = canvas.getActiveObject(); // The circle in this case
join_obj2 = the first point (p0) of the line
join_obj3 = the third point (p3) of the line
join_obj1.on('moving', function (options) {
var x=join_obj1.getLeft();
var y=join_obj1.getTop();
join_obj3.path[0] = ["M", x, y]; // Sets the path co-ordinates
join_obj2.top = y; // Sets the first point co-ordinates
join_obj2.left = x; // Sets the first point co-ordinates
// Following will be tried for joining the third point
// join_obj3.top = y;
// join_obj3.left = x;
canvas.renderAll();
});
以上代码成功地将线的左边缘(第一个点和线的原点)连接到圆上,并且工作正常。当我移动圆圈时,直线和第一个点也随之移动。但是,我不确定如何将线的右侧边缘与圆连接起来。 join_obj3.path[0] = ["M", x, y] 设置路径左侧的坐标。但是,我不确定如何将路径的右侧边缘设置为特定值
二次贝塞尔曲线是使用 fabric.Path
中的 'Q' 指令定义的。初始 'M' 指令设置第一个点 (65,0)。 'Q' 后面有两个坐标;单个控制点 (100,100) 和我们绘制的最终点 (300,100)。
这意味着您在二次贝塞尔曲线中的最后一点是 x = 300,y = 100。
所以试试 join_obj3.path[1] = ["Q", 100, 100, x, y];
Here 是二次贝塞尔曲线的一个很好的例子。
我在 fabric.js website 中找到了二次曲线的示例。
我想用二次曲线的一条边连接一个 fabric.js 圆。有没有办法做到这一点。如果我将代表其中一条边的点用一个圆分组,则该点在移动圆时会与路径分开
尝试一些东西后更新
有两个元素 - 一个是圆,另一个是二次曲线
根据以下 link 的提示:
为测试编写了以下代码:
一个。用户点击圆圈(因此它变成 activeObject)。之后,下面的函数就是运行:
join_obj1 = canvas.getActiveObject(); // The circle in this case
join_obj2 = the first point (p0) of the line
join_obj3 = the third point (p3) of the line
join_obj1.on('moving', function (options) {
var x=join_obj1.getLeft();
var y=join_obj1.getTop();
join_obj3.path[0] = ["M", x, y]; // Sets the path co-ordinates
join_obj2.top = y; // Sets the first point co-ordinates
join_obj2.left = x; // Sets the first point co-ordinates
// Following will be tried for joining the third point
// join_obj3.top = y;
// join_obj3.left = x;
canvas.renderAll();
});
以上代码成功地将线的左边缘(第一个点和线的原点)连接到圆上,并且工作正常。当我移动圆圈时,直线和第一个点也随之移动。但是,我不确定如何将线的右侧边缘与圆连接起来。 join_obj3.path[0] = ["M", x, y] 设置路径左侧的坐标。但是,我不确定如何将路径的右侧边缘设置为特定值
二次贝塞尔曲线是使用 fabric.Path
中的 'Q' 指令定义的。初始 'M' 指令设置第一个点 (65,0)。 'Q' 后面有两个坐标;单个控制点 (100,100) 和我们绘制的最终点 (300,100)。
这意味着您在二次贝塞尔曲线中的最后一点是 x = 300,y = 100。
所以试试 join_obj3.path[1] = ["Q", 100, 100, x, y];
Here 是二次贝塞尔曲线的一个很好的例子。