在悬停时更新HTML5画布矩形吗?

用户名

我有一些代码可以在画布上绘制一个矩形,但是当我将鼠标悬停在该矩形上时,我希望该矩形能够改变颜色。

问题是在绘制矩形后,我不确定如何再次选择它进行调整。

我想做的事:

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.rect(20,20,150,100);
ctx.stroke();

$('c.[rectangle]').hover(function(this){
    this.fillStyle = 'red';
    this.fill();
});
用户名

您不能使用画布立即使用此功能。画布只是位图,因此悬停逻辑必须手动实现。

方法如下:

  • 将所有想要的矩形存储为简单对象
  • 对于每个鼠标在canvas元素上移动:
    • 获取鼠标位置
    • 遍历对象列表
    • 使用isPointInPath()来检测“悬停”
    • 重绘两个状态

例子

var canvas = document.querySelector("canvas"),
    ctx = canvas.getContext("2d"),
    rects = [
        {x: 10, y: 10, w: 200, h: 50},
        {x: 50, y: 70, w: 150, h: 30}    // etc.
    ], i = 0, r;

// render initial rects.
while(r = rects[i++]) ctx.rect(r.x, r.y, r.w, r.h);
ctx.fillStyle = "blue"; ctx.fill();

canvas.onmousemove = function(e) {

  // important: correct mouse position:
  var rect = this.getBoundingClientRect(),
      x = e.clientX - rect.left,
      y = e.clientY - rect.top,
      i = 0, r;
  
  ctx.clearRect(0, 0, canvas.width, canvas.height); // for demo
   
  while(r = rects[i++]) {
    // add a single rect to path:
    ctx.beginPath();
    ctx.rect(r.x, r.y, r.w, r.h);    
    
    // check if we hover it, fill red, if not fill it blue
    ctx.fillStyle = ctx.isPointInPath(x, y) ? "red" : "blue";
    ctx.fill();
  }

};
<canvas/>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在HTML5画布中移动矩形的角

来自分类Dev

HTML5画布图形悬停填充

来自分类Dev

禁用html5画布

来自分类Dev

了解HTML5画布

来自分类Dev

禁用html5画布

来自分类Dev

HTML5画布脉动

来自分类Dev

HTML5画布脉动

来自分类Dev

将鼠标悬停动画添加到HTML5画布图形时出现问题

来自分类Dev

将鼠标悬停动画添加到HTML5画布图形时出现问题

来自分类Dev

HTML5画布合并到矩形以形成新形状

来自分类Dev

HTML5画布-旋转矩形上的文本

来自分类Dev

使用非矩形的html5画布裁剪图像并进行转换

来自分类Dev

如何在HTML5画布的矩形中添加滚动条?

来自分类Dev

html5画布散点图上的D3.js鼠标悬停

来自分类Dev

使用HTML 5画布矩形(像素大小)进行绘制会得到黑色矩形而不是蓝色矩形吗?

来自分类Dev

HTML5画布使圆圈在画布内闪烁

来自分类Dev

背景颜色会影响HTML5画布中的帧频吗?

来自分类Dev

Firefox使用drawImage将SVG图像渲染到HTML5画布时出错

来自分类Dev

在HTML5画布上绘制多个图像有时不起作用

来自分类Dev

HTML5画布-alpha <1时,相同的RGBA样式产生不同的颜色

来自分类Dev

当HTML5画布包含图像作为对象时,如何捕捉它

来自分类Dev

在HTML5画布中旋转JS对象时Y轴出现问题

来自分类Dev

HTML5画布,适合(其余)屏幕

来自分类Dev

HTML5画布叠加图像

来自分类Dev

HTML5画布图像变色

来自分类Dev

html5画布圆圈调色板

来自分类Dev

使用WebRTC流HTML5画布活动

来自分类Dev

在html5画布内制作重力效果

来自分类Dev

DOM循环中的HTML5画布