【发布时间】:2018-09-21 23:15:50
【问题描述】:
我有一个画布,用户可以点击它的任何部分在上面绘制点。众所周知,我们必须让用户能够撤消他已完成的操作。这就是我被卡住的地方,我该如何编写代码以允许用户在双击他要删除的点时删除该点?
<canvas id="canvas" width="160" height="160" style="cursor:crosshair;"></canvas>
1- 绘制画布并在其中加载图像的代码
var canvasOjo1 = document.getElementById('canvas'),
context1 = canvasOjo1.getContext('2d');
ojo1();
function ojo1()
{
base_image1 = new Image();
base_image1.src = 'https://www.admedicall.com.do/admedicall_v1//assets/img/patients-pictures/620236447.jpg';
base_image1.onload = function(){
context1.drawImage(base_image1, 0, 0);
}
}
2- 绘制点的代码
$("#canvas").click(function(e){
getPosition(e);
});
var pointSize = 3;
function getPosition(event){
var rect = canvas.getBoundingClientRect();
var x = event.clientX - rect.left;
var y = event.clientY - rect.top;
drawCoordinates(x,y);
}
function drawCoordinates(x,y){
var ctx = document.getElementById("canvas").getContext("2d");
ctx.fillStyle = "#ff2626"; // Red color
ctx.beginPath();
ctx.arc(x, y, pointSize, 0, Math.PI * 2, true);
ctx.fill();
}
我的小提琴:http://jsfiddle.net/xpvt214o/834918/
通过将鼠标悬停在图像上,我们会看到一个十字来创建点。
如果我想在双击创建一个点后如何删除它?
提前谢谢你。
【问题讨论】:
-
您必须将每个点存储在某个数组中的某个位置,然后在该数组更改时根据该数组渲染您的画布。当他们双击时,将点与数组中的点匹配并将其拼接出来。现在使用现在短一个项目的数组重绘整个画布。使用您现在拥有的固定绘制画布是不可能的。
标签: javascript canvas