fabricjs 自定义右键菜单

本文介绍了如何在fabricjs库中,由于缺乏内置右键事件,通过监听mouse:move并在页面全局捕获右键点击,实现在图形上进行右键操作,如高亮和菜单显示。作者详细展示了如何在鼠标移动和右键点击时切换选中对象,并定位上下文菜单的位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

fabricjs 并未自带右击事件,因此可以通过 mouse:move 加上页面的右击事件来做
that.canvas.on(‘mouse:move’, (options) => {
if (!this.rightClick && !that.isDrawing && options.target) {
// 因为 fabricjs 没有右键事件
// 因此 通过监听 整个页面来实现右键事件
// 当鼠标滑动 到图形上时 记录当前对象,当右键点击时 将当前对象高亮
// 记录下当前划过的 图形
this.moveOption = options
}
// 当鼠标继续移动时 清除 右击状态
this.rightClick = false

  })

监听页面右键事件 这里省略。。

rightClickFun(ev) {
if (this.moveOption && !this.rightClick) {
// // 右键点击前 如果之前右键点击过了,将之前点击的对象 的选中 框 四个角 显示出来
if (this.oldmoveOption) {
// this.oldmoveOption.target.set(‘backgroundColor’,’’)
}
// 重新渲染 所有 对象,目的是 设置当前选中的对象背景颜色为黑色, 目前未找到单独渲染某个 对象的 方法,就选择渲染所有了
this.canvas.renderAll()
// 将当前对象 储存为 old
this.oldmoveOption = this.moveOption
this.rightClick = true
console.log(‘evvvvv’, ev, this.oldmoveOption)

    document.getElementById('fabriccontextMenu').style.left = ev.clientX + 'px'
    document.getElementById('fabriccontextMenu').style.top = ev.clientY + 'px'
    this.contextMenuShow = true
  }

  // 阻止 浏览器默认右击事件
  ev.preventDefault()
},
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值