首页 > 其他分享 >Fabric.js 图案笔刷

Fabric.js 图案笔刷

时间:2023-10-26 22:23:33浏览次数:40  
标签:Fabric img 画笔 笔刷 js 图案 texturePatternBrush

本文简介

带尬猴,我是德育处主任


Fabric.js 有图案画笔功能,这个功能可以简单理解成“刮刮卡”效果。

如果只是看 Fabric.js 文档可能还不太明白 图案画笔 PatternBrush 是如何使用。

本文将讲解如何配置这款画笔的基础属性。



图案画笔(笔刷) PatternBrush

先看看效果

file


使用图案画笔

图案画笔(笔刷)的用法其实和普通的画笔差不多,只是多了个配置图片的操作。

核心的操作有以下几步:

  1. 画布开启绘图模式
  2. 加载图片
  3. 创建图案画笔
  4. 设置图案画笔的 source 指向图片
  5. 使用图案画笔

<canvas id="c" style="border: 1px solid #ccc;"></canvas>

<script>
  const canvas = new fabric.Canvas('c', {
    width: 400,
    height: 400,
    isDrawingMode: true // 1. 开启绘图模式
  })
  
  // 2. 创建并加载图片
  let img = new Image();
  img.src = './bubble.jpg'
  
  // 必须等图片加载完再进行下一步操作
  img.onload = function() {
    // 3. 创建图案画笔
    let texturePatternBrush = new fabric.PatternBrush(canvas)
    // 4. 设置图案画笔的 `source` 指向图片
    texturePatternBrush.source = img
    // 5. 使用图案画笔
    canvas.freeDrawingBrush = texturePatternBrush
  }
</script>

file

这么简单几步就完成了,但此时你应该已经发现,这个画笔是不是太小了?


设置画笔大小

可以通过设置画笔的 width 来修改画笔大小。

file

// 省略部分代码
img.onload = function(oImg) {
  let texturePatternBrush = new fabric.PatternBrush(canvas)
  texturePatternBrush.source = img
  texturePatternBrush.width = 50 // 设置画笔大小
  canvas.freeDrawingBrush = texturePatternBrush
}


最后要注意一点:需要在图片加载完成后才去设置画笔!!!



代码仓库

图案画笔(笔刷)



推荐阅读

在推荐阅读之前我要推荐一款游戏:《冲就完事模拟器》

标签:Fabric,img,画笔,笔刷,js,图案,texturePatternBrush
From: https://www.cnblogs.com/k21vin/p/17790605.html

相关文章

  • js HmacSHA256 改python
      uu.HmacSHA256(JSON.stringify(e),t).toString(uu.enc.Base64)    defdemo2(t,account,password,rsaKey):importhmacimporthashlibimportbase64aaa=f'{{"account":"{account}","password":&qu......
  • 什么是yaml格式与json格式
    什么是yaml格式与json格式yaml格式:文件名格式以.yml.yaml为后缀,用空格缩进表示字段的层级关系,可读性高,易于人类管理yaml格式布尔值类型:只有在是true/false时为真,假的意识例:debug:true 布尔值类型debug:"true"字符串类型​debug:false  布尔值类型debu......
  • JS中的4个for循环
    JS中的4个for循环介绍在ECMAScript5(简称ES5)中,有三个循环。在2015年6月发布的ECMAScript6(简称ES6)中,新增了一种循环类型。他们是:forforinforeachforof一起来看看这4个for循环。1、简单的for循环最常见的写法:constarr=[1,2,3];for(leti=0;i<arr.l......
  • Three.js 材质的 blending
    Three.js材质的blending//blendingmodesexporttypeBlending=|typeofNoBlending|typeofNormalBlending|typeofAdditiveBlending|typeofSubtractiveBlending|typeofMultiplyBlending|typeofCustomBlending;//customblendin......
  • js--深拷贝和浅拷贝
    一、栈(stack)和堆(heap)栈(stack):由操作系统自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈;每种数据类型占用的空间大小是固定的。堆(heap):一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表;二、基本数据类型......
  • JS Date相关内容
    记录一些与Date有关的使用技巧、兼容问题等。1.newDate()接收参数兼容性:以下是所有浏览器都可支持的接收参数形式vard=newDate(2011,01,07);//yyyy,mm-1,ddvard=newDate(2011,01,07,11,05,00);//yyyy,mm-1,dd,hh,mm,ssvard=newDate("02......
  • Python_Json的使用总结
    应用场景json应用于批量数据进行组织管理--将无序变为有序-将输入结构数据进行组织形式标注化直观问题1.函数功能:dump在英文中有转储,转存的意思 json.dump(data,f) json.dump(data,f,indent=4)#使用缩进和换行格式化JSON dumps()dumps是dump......
  • 【2023最新10.25】全国建筑市场监管公共服务平台(四库一平台)js逆向
    目录js逆向思路第一步抓包第一种破解方法,堆栈法python还原js扣代码还原第二种破解方法,搜索法完整代码效果展示js逆向思路第一步看请求网址的发起程序都有哪些接在js文件搜索AES,MD5,等高频加密方式的字段1parse2decrypt3.toString()4Base645表单字段6url关键字......
  • jsp
    1.jsp表达式<%=  %> 等价于  ${}  就相当于输出  2.jsp的脚本片段  <%  %> 3.jsp声明 <%!  %>  4.jsp指令这两个都是一样: header和footer的内容放在网页主体的上下部分 9大内置对象主要用的4个  存东西取...转发......
  • vite中使用scss导出变量到js/ts中作为变量使用
    定义scss定义一个scss文件,注意,这里的文件名要以module.scss结尾,不然会出现读写错误的问题。$background-color_hover:#e4e8ec;$background-color_chosed:#f44343;:export{bgc_hover:$background-color_hover;bgc_chosed:$background-color_chosed;}.modu......