Fabric.js+vue 实现鼠标滚轮缩放画布+移动画布

话不多说 直接贴代码

一、实现鼠标滚轮缩放画布

javascript 复制代码
// 可以实现鼠标滚轮缩放 最小为原来的百分之一,最大为原来的20倍
    canvas.on('mouse:wheel', function (opt) {
      var delta = opt.e.deltaY
      var zoom = canvas.getZoom()
      zoom *= 0.999 ** delta
      if (zoom > 20) zoom = 20
      if (zoom < 0.01) zoom = 0.01
      this.setZoom(zoom)
      opt.e.preventDefault()
      opt.e.stopPropagation()
    })

使用说明,我的canvas画布定义为 canvas,替他均不用额外设置变量。canvas = new fabric.Canvas('editorCanvas', {...

二、实现鼠标按下变抓手,并可移动画布中内容

javascript 复制代码
// 鼠标按下事件
    canvas.on('mouse:down', function (e) {
      this.panning = true
      canvas.selection = false
    })
    // 鼠标抬起事件
    canvas.on('mouse:up', function (e) {
      this.panning = false
      canvas.selection = true
    })
    // 移动画布事件
    canvas.on('mouse:move', function (e) {
      if (this.panning && e && e.e) {
        var delta = new fabric.Point(e.e.movementX, e.e.movementY)
        canvas.relativePan(delta)
      }
    })

使用说明:data中定义panning: false,用来标记鼠标按下状态(是否鼠标按下)。

原理,通过偏移量

相关推荐
小poop14 分钟前
从“雷峰塔”到“对象”:JavaScript基础语法入门指南
前端·javascript
chunyublog1 小时前
HDFS 上传文件名空格问题排障教程
前端·javascript·npm
FRing032 小时前
JavaScript入门到精通二十九(内置构造函数(Object、Array))
开发语言·前端·javascript
天才熊猫君3 小时前
前端队列,我是怎么从 `push + shift` 换成游标的
前端·javascript
Qinging3 小时前
var_let_const
javascript
Maxkim3 小时前
私钥就是数字 4:扒一扒这场把一家 CA 直接送走的事故
javascript·架构
u0111026753 小时前
Canvas 导出 PNG 时 quality 参数为什么不起作用
前端·javascript·vue.js
2601_949847753 小时前
jose 跨端三方库仓颉适配全流程
前端·javascript·flutter
CappuccinoRose3 小时前
滚动交互体系
前端·javascript·交互·html5·1024程序员节
开开心心就好4 小时前
电脑小说阅读器,支持朗读和自定义皮肤
服务器·开发语言·javascript·算法·pdf·c#·音视频