javascript - 删除鼠标悬停时的 Canvas 矩形边框

标签 javascript html canvas

假设我在 Canvas 上创建了一个矩形,如下所示...

var c = document.createElement("canvas");
document.body.appendChild(c);
var ctx = c.getContext("2d");
ctx.rect(20, 20, 150, 100);
ctx.fillText('hover mouse here', 60, 60);

c.addEventListener('mouseover', function() {
    ctx.stroke();
});

然后,当您将鼠标移到文本上时,矩形周围会出现边框。但假设我希望边框在鼠标离开 Canvas 区域后消失。我需要重新绘制整个矩形还是有更简单的方法来删除边框?

这只是一个简单的例子。我的实际 Canvas 在矩形中包含多个绘图,因此每次都必须重新绘制它会很痛苦。只是好奇是否有更简单的方法。

我已经尝试过样式属性,但不起作用。

这是上面代码的一个 fiddle :http://jsfiddle.net/wqbrnm0o/

最佳答案

更改 Canvas 的常用模式是删除整个 Canvas 并重新绘制所有所需的内容。 Canvas 的速度足以处理大多数重绘。因此,您可以在鼠标悬停时在矩形上绘制笔划,并在鼠标移开时删除并重绘所有内容,而无需笔划。

如果您仍然觉得需要保留内容,可以创建第二个 Canvas 来覆盖第一个 Canvas 。

鼠标悬停时,您仅在顶部 Canvas 上绘制“突出显示”笔划。

鼠标移开时,您可以简单地清除顶部 Canvas 。包含所有其他内容的底部 Canvas 将不受影响。

您可以在顶部 Canvas 上设置 CSS pointer-events:none; 属性,以便底部 Canvas 接收所有鼠标事件。

关于javascript - 删除鼠标悬停时的 Canvas 矩形边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28758133/

相关文章:

javascript - 如何更改 ChartJS 3 中饼图段悬停上的光标?

javascript - 悬停时将颜色层放在背景图像上的 Css 动画

javascript - slider 未对齐并在复制到新主体时断开

html - 每行最多 3 个 div,即使只有 1 或 2 个 div,Flexbox 的宽度也相同

java - JFrame更新问题

javascript - Flexbox、 Canvas 和动态调整大小

html5 Canvas 背景图像模糊和调整大小

javascript - 如何获取JSON字符串的一部分?

javascript - contenteditable div : IE8 not happy with backspace remove of HTML element

jquery - 如何修复表格中相同的图像尺寸(没有被压迫的图像)?