我需要在绘制时用光标悬挂绘图线。我试图用mousemove事件,但没有得到它的工作。以下是我现在所拥有的。在画布上绘制区域
http://jsfiddle.net/m1erickson/qwd2a/
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var canvasMouseX;
var canvasMouseY;
var canvasOffset = $("#canvas").offset();
var offsetX = canvasOffset.left;
var offsetY = canvasOffset.top;
var storedLines = [];
ctx.strokeStyle = "orange";
ctx.font = '12px Arial';
$("#canvas").mousedown(function (e) {
handleMouseDown(e);
});
function handleMouseDown(e) {
canvasMouseX = parseInt(e.clientX - offsetX);
canvasMouseY = parseInt(e.clientY - offsetY);
// Put your mousedown stuff here
storedLines.push({
x: canvasMouseX,
y: canvasMouseY
});
var count = storedLines.length;
var X = canvasMouseX - (count < 10 ? 4 : 7);
ctx.strokeStyle = "orange";
ctx.fillStyle = "black";
ctx.lineWidth = 1;
ctx.beginPath();
ctx.arc(canvasMouseX, canvasMouseY, 8, 0, 2 * Math.PI, false);
ctx.fillText(storedLines.length, X, canvasMouseY + 4);
ctx.stroke();
}
$("#draw").click(function() {
ctx.strokeStyle = "red";
ctx.fillStyle = "blue";
ctx.lineWidth = 3;
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.beginPath();
ctx.moveTo(storedLines[0].x, storedLines[0].y);
for (var i = 0; i < storedLines.length; i++) {
ctx.lineTo(storedLines[i].x, storedLines[i].y);
}
ctx.closePath();
ctx.fill();
ctx.stroke();
storedLines = [];
});
$("#clear").click(function() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
storedLines = [];
});
嗨!谢谢你的解决方案。是否有任何事情我可以尝试记住完成后填充的多边形? – chamara 2013-03-25 02:07:57
@chamara请看我最后的编辑。 – TAS 2013-03-25 09:58:21
@TAS:您的解决方案非常棒!有一些最简单的方法来编辑绘制的形状(移动一个坐标)? – kicaj 2014-10-18 15:36:34