javascript - 如何使用 Paper.js 将对象与贝塞尔曲线连接

标签 javascript canvas paperjs

我有一个网络应用程序原型(prototype),其中类似于 Blender 着色器编辑器的节点相互连接。我正在使用 Paper.js 框架

我希望使用那些平滑的贝塞尔曲线将它们连接起来。所以我有 2 个形状,我可以通过画一条直线来连接它们,但现在我想在端点处有 handle 来平滑这些对象,有点像这样: enter image description here 因此,端点上有 2 个 handle ,水平指向路径边界框的一半。 问题是我不知道如何使用 Paper.js 添加和编辑这些句柄 我的代码是这样的:

function makeRectangle(topLeft, size, cornerSize, colour){
    var rectangle = new Rectangle(topLeft, size);
    var cornerSize = cornerSize;
    var path = new Path.RoundRectangle(rectangle, cornerSize);
    path.fillColor = colour;
    return path;
}

var xy1 = new Point(50,50); //Position of 1st rectangle.
var size = new Size(100, 80); //Size
var c = new Size(8,8); //Corner radius
var col = "#167ee5"; //Colour

var r1 = makeRectangle(xy1, size, c, col); //Make first rectangle

var xy2 = new Point(467,310); //Position of second rectangle
var size2 = new Size(115, 70); //Size of second rectangle

var r2 = makeRectangle(xy2, size2, c, col); //Make secont rectangle

var r1cent = r1.bounds.center; //Get the center points, they will be used as endpoints for the curve.

var r2cent = r2.bounds.center;

var connector = new Path(r1cent, r2cent); //Ok so I made this path... Now what? How do access and edit the handlers at endpoints like in the image?

connector.strokeColor = 'black'; //Give it some colour so we can see it.

您可以粘贴所有这些代码 here无需任何设置,这是测试框架的好方法。

最佳答案

在定义连接器时,您可以使用 Segment 对象,而不是使用 Point(或者您可以设置 handleInhandleOut 创建路径后的属性)。

文档在这里:Segment

下面是一个草图,展示了如何在代码中使用 handleInhandleOut:

sketch.paperjs.org solution

关于javascript - 如何使用 Paper.js 将对象与贝塞尔曲线连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28212454/

相关文章:

javascript - 什么是 HTML5 元素的 getCSSCanvasContext() 方法?

javascript - Canvas 绘制图像失败

javascript - Paper.js 上的触发工具事件

javascript - 如何在不向元素添加 runat=server 的情况下修改 ASP.NET 页面中的 HTML 和 BODY 标记?

JavaScript 作用域(将一个数组复制到另一个数组)

javascript - 动态禁用 SVG 元素的触摸操作(过度滚动)

javascript - 从 paper.js 光栅导出 svg

javascript - 使用 jQuery 自动裁剪图像空白

Javascript Canvas如何放大图像

performance - 如何以最佳效率在paperjs中重新定位路径线?