vue2+Fabric.js库的使用(1)--Fabric的介绍


前言

提示:本文章会连续记录Fabric.js的使用

在项目开发过程中,可能会遇到绘制图形的情况,如自由绘图、图像编辑、绘制建筑轮廓图然后生成3D模型等等,这样的情况下,需要一个比较好的图形编辑器,并且可以导出绘制体,进行编辑,基于此进行本文章的撰写,同样也是自己学习的记录


提示:自己不是一个开发人员,也是学习的阶段,有不正确的地方请大家指出

一、Fabric.js是什么?

Fabric.js是一个完全开源的Javascript HTML5 (画布库)项目,于2010年左右开始创建,降低了开发Canvas的过程中,各种类型的交互与变更的复杂度;

Fabric.js是基于canvas封装的开源库,canvas提供一个好的画布能力, 但其api超级烂。如果你就想画个简单图形, 其实也可以, 不过做一些复杂的图形绘制, 编写一些复杂的效果,就不是那么好了。而Fabric.js就是比较好的选择之一

二、和vue2结合搭建一个简单项目

1.创建vue2项目

首先创建一个vue2项目,比较简单,这个不做过多说明,直接采用脚手架vue-cli(我用的CLI v5.0.8),在cmd中输入下面命令:

//创建vue项目
vue create + 项目名

创建完成之后,项目就会初始化好,如下:
在这里插入图片描述

2.安装Fabric.js

npm i fabric --save

在这里插入图片描述

3.创建简单图形

先创建简单的图形,把项目跑起来

只需 3个操作 就能展示点东西了

3.1创建canvas 容器

在 template 中创建 ,并设置容器的 id 和 宽高,width/height
代码如下(示例):

<canvas width="1200" height="500" id="canvas-box" style="border: 1px solid #ccc;"></canvas>

然后 把容器居中显示
代码如下(示例):

.hello{
  width: 100%;
  height: 100%;
  display: flex;
  justify-content:center;
  align-items:center;
}

3.2引入Fabric.js

在vue中引入Fabric.js

import { fabric } from 'fabric'

3.3使用 fabric 接管容器,并画一个矩形

实例化 fabric ,之后就可以使用 fabric 的 api 管理 canvas 了。

  mounted(){
    
    this.init()

  },

  methods:{
    init(){

      this.canvas = new fabric.Canvas('canvas-box') // 这里传入的是canvas的id

      // 创建一个长方形
      const rect = new fabric.Rect({
        top: 30, // 距离容器顶部 30px
        left: 30, // 距离容器左侧 30px
        width: 100, // 宽 100px
        height: 60, // 高 60px
        fill: 'red' // 填充 红色
      })

      // 在canvas画布中加入矩形(rect)。add是“添加”的意思
      this.canvas.add(rect)

    },

  },

呈现:
在这里插入图片描述

完整代码

<template>
  <div class="hello">
    <!-- 画布元素 -->
    <canvas width="1200" height="500" id="canvas-box" style="border: 1px solid #ccc;"></canvas>
  </div>
</template>

<script>

import { fabric } from 'fabric'

export default {
  name: 'HelloWorld',
  data() {
    return {
      
    }
  },

  mounted(){
    this.init()
  },

  methods:{
    init(){

      this.canvas = new fabric.Canvas('canvas-box') // 这里传入的是canvas的id

      // 创建一个长方形
      const rect = new fabric.Rect({
        top: 30, // 距离容器顶部 30px
        left: 30, // 距离容器左侧 30px
        width: 100, // 宽 100px
        height: 60, // 高 60px
        fill: 'red' // 填充 红色
      })

      // 在canvas画布中加入矩形(rect)。add是“添加”的意思
      this.canvas.add(rect)

    },

  },
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
.hello{
  width: 100%;
  height: 100%;
  display: flex;
  justify-content:center;
  align-items:center;
}

</style>

总结

这就是通过Fabric.js库创建了一个简单的项目,在画布里面绘制一个矩形,后续的文章会继续介绍

  • 11
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Vue.js是一个用于构建用户界面的JavaScript框架,而Three.js是一个用于创建3D图形的JavaScript。如果你想在Vue.js使用Three.js加载DXF文件,可以按照以下步骤进行操作: 1. 首先,确保你已经在Vue.js项目中引入了Three.js。你可以通过在HTML文件中添加`<script>`标签来引入Three.js,或者使用npm安装并在Vue组件中导入。 2. 创建一个Vue组件,用于加载和显示DXF文件。你可以在该组件的`mounted`生命周期钩子函数中进行Three.js的初始化和DXF文件的加载。 3. 在`mounted`钩子函数中,创建一个Three.js场景、相机和渲染器。你可以使用`THREE.Scene`、`THREE.PerspectiveCamera`和`THREE.WebGLRenderer`来创建它们。 4. 使用Three.js提供的DXFLoader插件加载DXF文件。你可以通过使用`THREE.DXFLoader`来加载DXF文件,并将其添加到场景中。 5. 设置相机和渲染器的参数,以及场景中的光照等其他设置。 6. 在渲染循环中更新场景和相机,并在每一帧中调用渲染器的`render`方法来渲染场景。 下面是一个简单的示例代码: ```vue <template> <div ref="container"></div> </template> <script> import * as THREE from 'three'; import { DXFLoader } from 'three/examples/jsm/loaders/DXFLoader'; export default { mounted() { // 创建场景 const scene = new THREE.Scene(); // 创建相机 const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 ); camera.position.z = 5; // 创建渲染器 const renderer = new THREE.WebGLRenderer(); renderer.setSize(window.innerWidth, window.innerHeight); this.$refs.container.appendChild(renderer.domElement); // 创建光源 const light = new THREE.PointLight(0xffffff, 1); light.position.set(0, 0, 5); scene.add(light); // 加载DXF文件 const loader = new DXFLoader(); loader.load('path/to/your/dxf/file.dxf', (dxf) => { scene.add(dxf); }); // 渲染循环 function animate() { requestAnimationFrame(animate); renderer.render(scene, camera); } animate(); }, }; </script> ``` 请注意,上述代码只是一个简单的示例,你可能需要根据你的具体需求进行修改和扩展。另外,确保你已经正确安装了Three.js和DXFLoader插件,并将路径替换为你的DXF文件的实际路径。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值