使用 fabricjs 模拟自由绘图
Emulate free drawing with fabricjs
我正在开发带有白板的应用程序。白板应该像 idroo.com 一样工作。一个用户正在画一些东西,另一个用户应该能够在他的浏览器上实时看到它。我使用 fabricjs 作为 canvas 包装器,它有我需要的一切。但是我无法在 canvas 上模拟自由绘图。我将鼠标位置和画笔选项发送到远程客户端,并尝试通过触发鼠标移动事件来呈现它们。但它不起作用。如果有人有类似的问题,你能帮忙吗?
canvasContainer.on('mousemove', function (e) {
var left = canvasContainer.offset().left;
var top = canvasContainer.offset().top;
var x = e.pageX - left;
var y = e.pageY - top;
//Send data to remote browser by socket.io or signalr
//I need to draw on remote browser by these x and y coordinates.
updateCursor(_connections, x, y);
});
你可以这样做:
var brush = new fabric.PencilBrush(canvas);
var points = [[10,10], [20,20], [25,70],[100,300]];
brush.onMouseDown({x:points[0][0], y:points[0][1]});
for(var i=1;i<points.length;i++) {
brush.onMouseMove({x:points[i][0], y:points[i][1]});
}
在这里查看 plunker:https://plnkr.co/edit/V1c1xkB29tgB2ha99CRQ?p=preview
您可以简化计算 x 和坐标的代码,如下所示:
var point = canvas.getPointer(e);
我正在开发带有白板的应用程序。白板应该像 idroo.com 一样工作。一个用户正在画一些东西,另一个用户应该能够在他的浏览器上实时看到它。我使用 fabricjs 作为 canvas 包装器,它有我需要的一切。但是我无法在 canvas 上模拟自由绘图。我将鼠标位置和画笔选项发送到远程客户端,并尝试通过触发鼠标移动事件来呈现它们。但它不起作用。如果有人有类似的问题,你能帮忙吗?
canvasContainer.on('mousemove', function (e) {
var left = canvasContainer.offset().left;
var top = canvasContainer.offset().top;
var x = e.pageX - left;
var y = e.pageY - top;
//Send data to remote browser by socket.io or signalr
//I need to draw on remote browser by these x and y coordinates.
updateCursor(_connections, x, y);
});
你可以这样做:
var brush = new fabric.PencilBrush(canvas);
var points = [[10,10], [20,20], [25,70],[100,300]];
brush.onMouseDown({x:points[0][0], y:points[0][1]});
for(var i=1;i<points.length;i++) {
brush.onMouseMove({x:points[i][0], y:points[i][1]});
}
在这里查看 plunker:https://plnkr.co/edit/V1c1xkB29tgB2ha99CRQ?p=preview
您可以简化计算 x 和坐标的代码,如下所示:
var point = canvas.getPointer(e);