1.钢笔橡皮绘制
钢笔

this.fabricObj.freeDrawingBrush = new fabric.PencilBrush( this.fabricObj );        //钢笔刷
this.fabricObj.freeDrawingBrush.width = this.lineWidth;    //线宽
this.fabricObj.isDrawingMode = true;     //自由绘制

橡皮

 this.fabricObj.freeDrawingBrush = new fabric.EraserBrush( this.fabricObj);this.fabricObj.freeDrawingBrush.width = this.lineWidth;this.fabricObj.isDrawingMode = true;

透明色
this.fabricObj.freeDrawingBrush自身无opacity属性,但是color属性可以用rgba属性,将hex转为rgba

 hexToRgba(hex, opacity) {return ( "rgba(" +  parseInt("0x" + hex.slice(1, 3)) + "," + parseInt("0x" + hex.slice(3, 5)) +  "," +parseInt("0x" + hex.slice(5, 7)) +"," + opacity +  ")");},

2.钢笔橡皮还原问题
看生成数据,数据里type:path就是通过路径绘制
所有的橡皮数据都是钢笔数据的属性值,感觉数据删减出必要的属性

 drawObj = new fabric.Path(value["path"], {   //钢笔轨迹fill: null,stroke: "rgb(0, 0, 0)",    strokeWidth: 10,strokeLineCap: "round",  //笔头,原型erasable: true,  //可擦属性});

再追加宽高,top,left就行

**var group = new fabric.Group([new fabric.Rect({  //橡皮里都有这个框,推测是橡皮绘制范围originX: "center",originY: "center",left: 0.5,top: 0.5,width: 196,height: 244,strokeWidth: 1,erasable: true,}),new fabric.Path(this.eraserBrushPath1, {  //橡皮数据left: -27.51,top: -83.51,width: 37.01,height: 262.01,stroke: "rgb(0, 0, 0)",strokeWidth: 10,strokeLineCap: "round",globalCompositeOperation: "destination-out",path: this.eraserBrushPath1,}),]);**

钢笔橡皮绑定,渲染

pencilBrush.clipPath = group;
this.fabricObj.add(pencilBrush);
this.fabricObj.renderAll(); // 重新渲染画布

遇到问题
1.钢笔橡皮还原,循环层级多,不要用fabric.js自带属性fabric.set({}),会出现额外属性,用this.$set的vue自带对象追加属性
2.渲染会显示不全,看数据group是有自带属性的,也不知道为啥删除掉group自带属性就正常了,也不知道为啥

fabric.js 钢笔橡皮问题相关推荐

  1. Canvas实用库Fabric.js使用手册

    简介 什么是Fabric.js? Fabric.js是一个可以简化Canvas程序编写的库. Fabric.js为Canvas提供所缺少的对象模型, svg parser, 交互和一整套其他不可或缺的 ...

  2. 强大的Canvas开源库Fabric.js简介与开发指南

    什么是Fabric.js? Fabric.js 是一个强大且简单的Javascript HTML5 Canvas库. 官网地址:http://fabricjs.com/ 为什么要使用Fabric.js ...

  3. fabric.js和高级画板

    本文介绍fabric.js框架使用,以及使用fabricjs打造一个高级画板程序. 高级画板功能介绍 全局绘制颜色选择 护眼模式.网格模式切换 自由绘制 画箭头 画直线 画虚线 画圆/椭圆/矩形/直角 ...

  4. HTML5 Canvas JavaScript库 Fabric.js 使用经验

    首先,表明我的态度:采用 Flash 才是最优方案,不建议使用 HTML 5 的 Canvas 做一些生产/工业级的网页应用. Flash的优势一是浏览器支持好,二是代码成熟稳定.而HTML5 的 C ...

  5. angelajs中ajax,Fabric.js Triangle angle属性用法及代码示例

    在本文中,我们将看到如何使用FabricJS绘制固定角度的画布Triangle.画布三角形表示三角形是可移动的,可以根据需要拉伸.此外,当涉及初始笔触颜色,高度,宽度,填充颜色或笔触宽度时,可以自定义 ...

  6. Fabric.js添加辅助线的方法

    Fabric.js高级点的教程1–添加辅助线的方法 Fabric.js添加辅助线的方法 Fabric.js 非常的强大,但是国内的资源教程很少,最近想加个功能给元素添加辅助参考线(类似 演示 ).这样 ...

  7. Fabric.js 自由绘制椭圆

    theme: smartblue 持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天,点击查看活动详情 本文简介 点赞 + 关注 + 收藏 = 学会了 本文讲解在 Fabric ...

  8. html5无法绘制线条,Html5画布 - 使用fabric.js绘制完美线条或不使用

    我正在创建一个游戏,我需要在不同类型的屏幕分辨率和缩放下实现HTML5上的完美画布线.Html5画布 - 使用fabric.js绘制完美线条或不使用 很容易理解我说的,简单地粘贴在两个不同的代码转换成 ...

  9. Fabric.js 铅笔笔刷

    本文简介 点赞 + 关注 + 收藏 = 学会了 fabric.js 的铅笔其实是继承基础画笔的一个工具,在基础画笔的基础上多了"拐角平滑度"等配置项. 本文讲解铅笔的基础用法以及常 ...

最新文章

  1. useradd与adduser的区别
  2. ERP已死,中台已凉,DDD称王!
  3. 以完美主义的名义,拖延症在公开掠夺
  4. 【Flutter】StatefulWidget 组件 ( 底部导航栏组件 | BottomNavigationBar 组件 | BottomNavigationBarItem 组件 | 选项卡切换 )
  5. 短小强悍的JavaScript异步调用库
  6. log4net 记录日志到sqlserver
  7. ZYNQ下载程序出现错误Memory write error at 0x100000. APB
  8. 【方法篇】质谱手段分析组蛋白修饰类型
  9. 设置背景颜色html,css怎么设置背景颜色?
  10. VsCode下通过Latex运行计算机学报的模板
  11. 光荣使命微信版服务器,腾讯光荣使命手游微信可以和QQ一起玩么 微信QQ帐号数据互通么...
  12. 极客战记计算机科学2村庄守卫,「网易官方」极客战记(codecombat)攻略-森林-村庄守护神-village-champion...
  13. webstrom免安装版
  14. 光线:提高照片的艺术感
  15. 【XJTUSE 计算机组成与结构笔记】第六章 外存
  16. 7-104 三天打鱼两天晒网
  17. windows下的中文文件名共享在linux下显示乱码的问题
  18. 星座图matlab是什么意思,如何理解Matlab星座图16QAM
  19. JSON是什么,主要用来做哪方面的工作?
  20. Bias-Variance Tradeoff

热门文章

  1. 三、Oracle/支付宝/旺旺
  2. wxpython中表格顶角怎么设置_46-wxpython 4 使用 grid 展示表格
  3. 七牛云上传视频并转码
  4. proxmox ve 7.2 AMD显卡直通 网卡驱动 调度器
  5. 为什么使用kbhit后按下键盘无反应?
  6. 八字四柱排盘原理及源码(PHP、Java和Python)
  7. IDEA类文件图标变成“J”
  8. 4k分辨率是多少(真4k与假4k区别)
  9. Leetcode-数据结构-1.两数之和
  10. 【Golang】gin上传文件并且返回文件地址