【发布时间】:2020-03-20 14:29:17
【问题描述】:
现在我有选择不同的颜色,但在选择其他颜色时,仍然从最新行的最后一点绘制行。选择其他颜色后如何在新鲜的地方画画?
function drawLine() {
canvas.on("mouse:down", function(event) {
var pointer = canvas.getPointer(event.e);
var positionX = pointer.x;
var positionY = pointer.y;
var circlePoint = new fabric.Circle({
radius: 1,
fill: pipeColor,
left: positionX,
top: positionY,
selectable: false,
originX: "center",
originY: "center",
hoverCursor: "auto"
});
canvas.add(circlePoint);
// Store the points to draw the lines
pipePoints.push(circlePoint);
// console.log(pipePoints);
if (pipePoints.length > 1) {
var startPoint = pipePoints[pipePoints.length - 2];
var endPoint = pipePoints[pipePoints.length - 1];
var pipeLine = new fabric.Line(
[
startPoint.get("left"),
startPoint.get("top"),
endPoint.get("left"),
endPoint.get("top")
],
{
stroke: pipeColor,
strokeWidth: 2,
hasControls: false,
hasBorders: false,
selectable: false,
lockMovementX: true,
lockMovementY: true,
hoverCursor: "default",
originX: "center",
originY: "center"
}
);
pipeLines.push(pipeLine);
canvas.add(pipeLine);
}
});
$('#colorpicker').change(function () {
canvas.item(0).selectable = false;
pipeColor = $(this).val();
drawLine();
});
}
现在我可以画任何我想从 X 点开始到 Y 点结束的线,但是当我改变线的颜色时,我想从 Z 点开始而不是 Y 点
【问题讨论】:
-
您能否提供更多代码(我们可以用来重现您的问题)?我的猜测是,当你画一条新线时,它会错过
ctx.beginPath();。 developer.mozilla.org/en-US/docs/Web/API/…
标签: javascript canvas fabricjs draw