Canvas中判断鼠标对于不规则图形的事件监听

在使用echarts的过程中发现,echarts中的不规则图形,对于鼠标的事件监听是非常的准确的。

以前的我非常愚蠢的以为,任何图形的事件判断只是去判断canvas图形所在的一个近似大小的矩形中进行的判断。

通过现象看本质,echarts中的事件实现并不是我想象的那样。于是去搜索了一下资料,最终在MDN上发现了一个十分有用的方法:

Context2D.isPointInPath

这意味着,你所画的不规则图形,都可以通过context的这个方法进行判断,在网上找了代码,写了一下伪代码如下:

// 判断x,y是否在图形中
function in(x, y, graph) {
    var isIn = false;
    // 获取context
    var context = graph.getContext();
    // 模拟重绘需要判断时间的图形
    context.save();
    graph.shadowDraw();
    if (context.isPointInPath(x, y)) {
        isIn = true;
    }
    context.restore();
    return isIn;
}

既然能够判断xy是否在图形中,那么模拟绑定事件也是非常简单的事情了,再次做一下记录,满足一下自己的好奇心。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值