【发布时间】:2019-12-21 11:36:38
【问题描述】:
我在某人的fiddle 上找到了可以在鼠标移动时进行描边的代码(单击并移动描边)。我的要求是以相同的方式用鼠标移动在 SVG 上描边矩形。有没有可能,如果有,怎么做?
//Canvas
const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
//Variables
let canvasx = canvas.offsetLeft;
let canvasy = canvas.offsetTop;
let last_mousex = 0;
let last_mousey = 0;
let mousex = 0;
let mousey = 0;
let mousedown = false;
//Mousedown
canvas.onmousedown = ({
clientX,
clientY
}) => {
last_mousex = parseInt(clientX - canvasx);
last_mousey = parseInt(clientY - canvasy);
mousedown = true;
};
//Mouseup
canvas.onmouseup = () => mousedown = false;
//Mousemove
canvas.onmousemove = ({
clientX,
clientY
}) => {
mousex = parseInt(clientX - canvasx);
mousey = parseInt(clientY - canvasy);
if (mousedown) {
ctx.clearRect(0, 0, canvas.width, canvas.height); //clear canvas
ctx.beginPath();
const width = mousex - last_mousex;
const height = mousey - last_mousey;
ctx.rect(last_mousex, last_mousey, width, height);
ctx.strokeStyle = 'black';
ctx.lineWidth = 10;
ctx.stroke();
}
};
canvas {
cursor: crosshair;
border: 1px solid #000000;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<canvas id="canvas" width="800" height="500"></canvas>
</body>
</html>
Some Code// To prevent Stackoverflow error, please ignore
【问题讨论】:
标签: javascript html css svg canvas