首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Fabric.js 监听元素相交(重叠)

本文简介 fabric.js 提供了一个方法可以检查对象是否与另一个对象相交(也可以叫元素是否重叠)。 这个方法叫 intersectsWithObject()。...本文主要想提一下 fabric.js 存在这么一个方便的方法。 检测元素是否相交有什么用呢? 这个功能在日常开发中其实很实用,在它的帮助下我们可以实现“防止对象碰撞”、“对象自动对齐贴合”等功能。...动手试试看 为了演示 intersectsWithObject() ,我打算做如下操作: 创建画布 创建矩形、圆形、三角形元素,并将它们添加到画布里 使用 canvas.on('object:moving...') 监听图形元素移动 元素移动的过程中不断遍历画布当前所有元素,如果正在移动的元素和其他图形相交了,就在控制台输出被相交的元素的类型。.../js/fabric.js"> let canvas = new fabric.Canvas('c') // 矩形 - 亮粉色 let rect = new

3.2K20

fabric.js开发图片编辑器的细节实现

图片 正文 1、架构演进 最早的设计是将 fabric.js创建的canvas对象通过provide传递给子组件使用,功能代码封装到vue组件中。...,将通用方法挂载到Editor对象上实现复用。...components/lock.vue#L41 图片 7、画布大小调整 最早的版本的画布大小调整就是对fabric.js的canvas大小做调整,这样做有2个问题,一是没办法将画布大小保存到json文件中...,另外一个问题是缩小放画布时,缩小后画布颜色和背景颜色一致,无法区分画布边界,效果较差。...最后的实现思路是,使用矩形元素模拟画布区域,fabric.js的canvas大小根据视口DOM的宽高自适应,通过调整矩形元素属性来设置画布到大小和颜色,其他元素通过属相面板修改属性。

3.5K40
您找到你想要的搜索结果了吗?
是的
没有找到

Fabric.js 从入门到________

---- 画布 Fabric.js画布操作性是非常强的,这里我列举几个常用例子,其他操作可以查看官方文档。...,对象控制边界的不透明度 }) canvas.add(circle) } onMounted(() => { init() }) 上面这个例子的样式分为正常状态和被选中状态...,对象控制边界的不透明度 }) canvas.add(text) } onMounted(() => { init() }) 除此之外,还可以配置 上划线 、下划线...pencentage 像素 或者 百分比 coords: { x1: 0, y1: 0, x2: circle.width, y2: 0 }, // 至少2个坐标对(x1,y1和x2,y2)将定义渐变在对象上的扩展方式...操作组 本节案例在线预览 - 建组及操作 本节代码仓库 Fabric.js 的组提供了很多方法,这里列一些常用的: getObjects() 返回一组中所有对象的数组 size() 所有对象的数量

12.9K50

Fabric.js 居中元素 🎗️

在使用 Fabric.js 开发时,可能会需要将元素居中。...本文总结了 Fabric.js 常用的将元素居中的方法,其中包括: 基于视窗的水平居中 基于画布的水平居中 带动画效果的水平居中 基于视窗的垂直居中 基于画布的垂直居中 带动画效果的垂直居中 同时实现水平和垂直居中...阅读本文需要你有一定的 Fabric.js 基础,如果还不太了解 Fabric.js 是什么,可以阅读 《Fabric.js 从入门到膨胀》 创建基础项目 为了方便演示,我在初始化画布的时: 添加一个背景图...添加一个矩形,之后要居中的对象就是它了。 添加鼠标滚轮滚动时缩放画布(方便演示 基于视窗 和 基于画布 的区别)。 添加鼠标拖拽画布平移位置(方便演示 基于视窗 和 基于画布 的区别)。...-- 引入 Fabric.js -->

3.6K20

Fabric.js 让用户手动加粗文本

-- 引入fabric.js --> // 创建画布 const canvas = new fabric.Canvas...} } 加粗选中的文字 可以用 setSelectionStyles 设置被选中的文字样式,里面传一个样式对象即可。...-- 引入fabric.js --> // 创建画布 const canvas = new fabric.Canvas...《Fabric.js 基础画笔的用法 BaseBrush》 画笔的基础用法 《Fabric.js 自由绘制圆形》 将“框选”动作改造成自由绘制圆形 《Fabric.js 3个api设置画布宽高》 宽高设置并不是在初始化是才能进行的...3中方法 《Fabric.js 摆正元素的4种方法(带过渡动画)》 一键摆正被你旋转过的元素 《Fabric.js 将本地图像上传到画布背景》 除了在初始化时设置画布背景外,我还做了本地上传背景的功能,

3.5K30

Fabric.js 橡皮擦的用法(包含恢复功能)

-- 引入定制好的 fabric --> // 初始化画布 const canvas = this....new fabric.EraserBrush 里需要传入画布本身,在初始化画布时的那个对象 const canvas = this....《Fabric.js 自由绘制圆形》 将“框选”动作改造成自由绘制圆形 《Fabric.js 3个api设置画布宽高》 宽高设置并不是在初始化是才能进行的,本文介绍3种方法设置画布宽高,让你的画布更容易适配不同的使用场景...《Fabric.js 更换图片的3种方法(包括更换分组内的图片,以及存在缓存的情况)》 如果你的项目需要动态更换画布上的图片,那我也给你总结了3中方法 《Fabric.js 摆正元素的4种方法(带过渡动画...)》 一键摆正被你旋转过的元素 《Fabric.js 将本地图像上传到画布背景》 除了在初始化时设置画布背景外,我还做了本地上传背景的功能,让画布在运行时也能修改背景图 《在 Vue3中使用Fabric.js

2.5K30

Fabric.js 复制粘贴元素

本文简介 当你要复制一个 fabric 的元素时,你考虑到的是什么?是深拷贝当前选中对象再添加到画布中?...其实,fabric.js 提供了一个克隆方法,在 fabric.js 官网的案例里也有这个demo:Fabric.js demos · Copy and Paste。 这次就讲讲这个 demo。...@5.3.0/dist/fabric.min.js"> const canvas = new fabric.Canvas('c') let rect = new fabric.Rect...在 JS 部分需要创建一个变量保存克隆对象,这个变量叫 _clipboard。 在执行复制操作时要判断当前是否选中元素对象。 在执行粘贴操作时要判断当前是否克隆了元素对象。...因为选中的不止一个元素,所以在粘贴的时候要遍历所有元素出来,用到 fabric.js 提供的 forEachObject 方法。

65720

Fabric.js 拖放元素进画布

本文简介 学习 Fabric.js,我的建议是看文档不如看 demo。 本文实现的功能:将元素拖进到画布中并生成对应的图形或图片。...解2:Fabric.js 创建元素可看 《Fabric.js 从入门到膨胀》的基础图形篇,要创建图片可以看 图片篇。 解3:缩放画布我在 《Fabric.js 缩放画布》 里讲解过。...解4:移动画布我在 《Fabric.js 拖拽平移画布》 里讲解过。 解5:画布的左上角不一定在body的左上角,也就是鼠标当前位置可能和画布对应的坐标不一样,需要通过加减法计算一下。...解6:Fabric.js 提供了一个方法可以将鼠标当前坐标转换为画布对应的真实坐标,这个方法叫 restorePointerVpt 。 动手 我分几个步骤慢慢实现上述功能。...⭐ Fabric.js 拖拽创建元素

3.2K30

Fabric.js 右键菜单

---- PK创意闹新春,我正在参加「春节创意投稿大赛」,详情请看:春节创意投稿大赛 本文简介 Fabric.js 默认**没提供 鼠标右键事件**,只有 鼠标按键点击 、鼠标按键抬起 、鼠标移动 等事件...本文主要关注 Fabric.js 的主要 api 有: fireRightClick:允许右键点击 stopContextMenu:禁用默认右键菜单 mouse:down:鼠标点击事件 如果不知道 Fabric.js...的同学,可以看 《Fabric.js 从入门到___》 本案例是使用原生方式开发,不基于 Vue 、React 等框架,所以不用太担心运行环境等问题。...在 对象相关的文档 里,关于鼠标的事件好像没有右键,稍微沾边点的就是鼠标点击(这里我选了 mousedown)。...初始化画布,并生成图形 // 文档加载后执行 window.onload = function() { // 输出当前 fabric 版本 console.log(`Facrib.js

7.1K10

基于Vue + fabric.js的图片标注组件搭建

canva,在原生canvas之上提供了交互式对象模型,通过简洁的api就可以在画布上进行丰富的操作。...fabric.js介绍fabric是基于canvas进行的api封装,可以实现绘制矩形、圆、椭圆、文本等一些基础图形,同时支持画笔自定义图形,fabric的优点在于它对生成的canvas画布进行了良好的封装...,包括对画布以及画布上的对象进行调整,监听画布对象的各种事件,使得画布交互逻辑变得简单易上手。...fabric的官网详细地列出了fabric的各种参数以及api,由于Fabric.js是国外的框架,文档为全英文,且相关示例少,所以建议配合源码使用功能构建画布此处参考:https://github.com...,可修改画框的对应参数即可调整画框主要用到上述的object:moving:对象移动;object:modified:对象调整;handleObjectMoving(){// 阻止对象移动到画布外面

4.9K30
领券