fabric.js的使用

news2025/3/1 8:37:10

安装:npm install fabric --save

// 使用fabric实现:
import { fabric } from 'fabric'


initFabric () {
  // create a wrapper around native canvas element (with id="canvasEl")
  let canvas = new fabric.Canvas('canvasEl')
  // create a rectangle object
  let rect = new fabric.Rect({
    left: 100,
    top: 100,
    fill: 'red',
    width: 20,
    height: 20,
    // angle:45,
  })

  // "add" rectangle onto canvas
  canvas.add(rect)

  // 改变rect的属性,然后重新渲染
  rect.set({ left: 50, top: 50 })
  canvas.renderAll()

  let circle = new fabric.Circle({
    radius: 20,
    fill: 'green',
    left: 100,
    top: 100,
  })
  let triangle = new fabric.Triangle({
    width: 20,
    height: 30,
    fill: 'blue',
    left: 150,
    top: 50,
  })
  canvas.add(circle, triangle)

  // 禁止框选(多选)
  canvas.selection = false // disable group selection
  // 禁止单个选择
  // circle.set('selectable', false); // make object unselectable

  // Path
  let path = new fabric.Path('M 0 0 L 200 100 L 170 200 z')
  // path.set({ left: 120, top: 120 });
  path.set({ fill: 'red', stroke: 'green', strokeWidth: 5, opacity: 0.5 })
  // canvas.add(path);

  // 旋转角度,有动画效果!
  rect.animate('angle', 45, {
    onChange: canvas.renderAll.bind(canvas),
    duration: 4000,
    easing: fabric.util.ease.easeOutBounce
  })
},

在这里插入图片描述

// canvas自己实现这些:
initCanvas () {
  let canvasEl = document.getElementById('canvasContainer')
  // 获取上下文:get 2d context to draw on (the "bitmap" mentioned earlier)
  let ctx = canvasEl.getContext('2d')
  // set fill color of context
  ctx.fillStyle = 'red'

  ctx.translate(100, 100) // 位移到指定位置
  ctx.rotate(Math.PI / 180 * 45)  // 旋转角度

  // create rectangle at a 100,100 point, with 20x20 dimensions
  // ctx.fillRect(100,100,20,20)

  ctx.fillRect(-10, -10, 20, 20)
},

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1087045.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JVM 入门

文章目录 JVMJVM 垮平台执行其他语言的代码JDK、JRE、JVM各种 Java 虚拟机查看我们本地的虚拟机版本HotSpot 的整体架构 JVM JVM (Java Virtual Machine),Java 虚拟机,我们的 Java 代码需编译为 .class 字节码文件,经…

CH6-中断和异常处理

6.1 中断和异常处理概述 中断和异常概述(INTERRUPT AND EXCEPTION OVERVIEW) 中断和异常向量:中断和异常在处理器中都有对应的编号,被称为向量。当中断或异常发生时,处理器会根据向量找到相应的中断处理程序或异常处理…

el-data-picker限制日期可选范围

<el-date-pickerclass"date"v-model"date"type"date"change"dateChange"value-format"yyyy-MM-dd"format"yyyy-MM-dd"placeholder"选择日期":picker-options"datePickerOptions"></…

分享一个高颜值开源计算器

今天逛同性交友社区时发现一个高颜值的开源计算器&#xff0c;分享给大家&#xff0c;希望对大家有所帮助。 NUMWORKS Design — NumWorks Design — NumWorks 特性 结构 电气 MCU STM32F730V8T6 计算器的大脑和心脏。这款芯片结合了一个时钟频率为216 MHz的ARMv7-M Cortex-…

Scraping 和Crawling的区别与联系

在互联网时代&#xff0c;获取网页上的数据对于许多人来说已经成为一种常态。在这个过程中&#xff0c;我们经常会听到两个词&#xff1a;Web Scraping&#xff08;网页抓取&#xff09;和Web Crawling&#xff08;网络爬虫&#xff09;&#xff0c;它们看似相似&#xff0c;但…

199、在RabbitMQ管理控制台中管理 Exchange(充当消息交换机的组件) 和 Queue(消息队列),以及对默认Exchange的讲解

目录 ★ 自动创建的Exchange★ 创建Exchange所支持的属性演示&#xff1a;创建消息队列 ★ 持久化消息★ 默认Exchange讲解 使用默认的 Exchange 支持 P2P: Exchange&#xff1a;把客户端发来的消息路由到消息队列去 每个虚拟机下面都默认有 Exchange &#xff0c;通过这个默认…

如何制件一本优秀的旅游杂志,这有一份操作指南

时间过的好快&#xff0c;一转眼一年已过了一大半&#xff0c;忙碌了一年&#xff0c;也该在这不冷不热的十月&#xff0c;而且充满桂花的香气的时间里停下脚步&#xff0c;带着家人出去畅游一番&#xff0c;开拓一下自己的眼界。那出去游玩肯定少不了记录生活&#xff0c;每到…

在 Elasticsearch 中实现自动完成功能 1:Prefix queries

自动完成与搜索功能不同 - 我们应该在用户键入下一个字符后立即更新自动完成选项&#xff0c;每秒都会访问数据库&#xff0c;过滤数百万条记录&#xff0c;而不会导致任何性能下降&#xff01; Elasticsearch 是一种可以轻松实现此类功能的技术&#xff0c;它是一种基于 Apac…

低压配电系统中浪涌保护器的作用,安装位置和接线方法

低压配电系统是指在变压器低压侧或用户侧的电气装置&#xff0c;主要用于向用户提供安全、可靠和经济的电能。低压配电系统中常见的电气设备有低压配电柜、分支箱、开关箱、插座、照明等。这些设备都需要防止因外部或内部原因产生的过电压对其造成损坏或影响其正常工作。过电压…

帝国CMS《养生健康》模板/养生网站源码模板/健康模板+养生资讯+优化版

帝国CMS《健康养生》模板&#xff0c;简介大气访问快,养生源码模板,健康模板,百度自动推送,站内关键字改成直接调用tag标签&#xff0c;这样就方便对站内优化已比较好&#xff0c;经测试还容易产生词库。 采用帝国CMS7.5内核&#xff0c;开源不限域名&#xff0c;包含WAP手机端…

键盘录入涉及到的方法

键盘录入涉及到的方法 1&#xff09;next&#xff08;&#xff09;、nextLine&#xff08;&#xff09;&#xff1a; 可以接受任意数据&#xff0c;但是都会返回一个字符串。 2&#xff09;nextInt&#xff08;&#xff09;&#xff1a; 只能接受整数。 3&#xff09;next…

harbor的安装及使用

文章目录 安装harbor仓库具体安装过程测试上传 资源编排就是合理快速的分配计算资源和硬件资源&#xff0c;进行计算。 docker: swarm google: kubernetes (k8s,k3s) opensource: docker-compose 安装harbor仓库 0&#xff09; 创建/root/harbor目录&#xff0c;cd到此目录 …

同城二手市场生活源码系统+前后端完整搭建教程

大家好啊&#xff0c;今天罗峰给大家分享一个同城二手市场生活源码系统&#xff0c;二手市场在我们的日常生活中也比较常见&#xff0c;传统的二手市场操作起来不是很方便&#xff0c;这款小程序就轻松近实现在家足不出户就可以进行交易。以下是部分代码图&#xff1a; 系统特色…

多媒体应用设计师 第2章 多媒体信息处理及编辑技术

1.多媒体信息的种类与特点 视觉类&#xff1a;文字、图像、图形、视频、动画、其他&#xff08;视频、符号表示的数值、图形表示的某种数据曲线、数据库的关系数据&#xff09; 听觉类&#xff1a;波形声音、语音、音乐 多媒体信息特点&#xff1a; 多媒体是有格式的。 越接近…

CSS margin(外边距)

CSS margin(外边距)属性定义元素周围的空间。 margin margin 清除周围的&#xff08;外边框&#xff09;元素区域。margin 没有背景颜色&#xff0c;是完全透明的。 margin 可以单独改变元素的上&#xff0c;下&#xff0c;左&#xff0c;右边距&#xff0c;也可以一次改变所…

一键批量转换,轻松将TS视频转为MP4视频,实现更广泛的播放和分享!

在享受精彩视频内容的同时&#xff0c;有时我们可能会面临一个问题&#xff1a;某些视频格式可能不太适合我们的播放设备或分享平台。特别是TS格式的视频&#xff0c;在一些情况下可能无法直接播放或上传。但是不用担心&#xff0c;因为我们为您提供了一款强大的视频剪辑工具&a…

【AI】Datasets

文章目录 DatasetClassificationObject detectionSegmentationHumanFace图像质量 标注工具 Dataset Classification CIFAR-10CIFAR-100COCOImageNetMNISTSVHN Object detection COCOPASCAL VOCCaltech101 Segmentation COCOPASCAL VOCCityscapes datasetLVIS Human Cal…

kafka生产者发送消息报错 Bootstrap broker localhost:9092 (id: -1 rack: null) disconnected

报这个错误是因为kafka里的配置要修改下 在config目录下 server.properties配置文件 这下发送消息就不会一直等待&#xff0c;就可以发送成功了

日历视图,轻松解决时间管理难题_三叠云

日历组件 路径 仪表盘设计 >> 组件 功能简介 仪表盘新增「日历」组件。日历组件是以日历图的形式去呈现数据的一种方式&#xff0c;支持【列表模式】和【面板模式】。 【列表模式】&#xff1a; 通过日历方式筛选数据&#xff0c;数据将会以列表的方式呈现。 【面…

IDEA中点击New没有Java Class

解决办法&#xff1a;右键src&#xff0c;也可以是其他文件名&#xff0c;点击Mark Directory as 点击Sources Root即可