返回介绍

Fabric.js 示例:与画布外的对象交互

发布于 2024-11-08 21:05:58 字数 1679 浏览 0 评论 0 收藏 0

现在的网页,很少再使用传统的模式开发了,一般都是使用 Vue 等前端框架开发,提高了开发速度,但是如何与 Fabric.js​ 如何交互和操作是个问题,下面是一个简单的示例:

<template>
  <div class="groups">
    <canvas id="canvas"></canvas>
    <button ref="btn">button</button>
  </div>
</template>
<script>
import { fabric } from "fabric";
export default {
  data() {
    return {
      canvas: "",
    };
  },
  mounted() {
    var canvas = this.canvas = new fabric.Canvas("canvas", {
      width: 400,
      height: 400,
      backgroundColor: "#ddd",
    });
    fabric.Object.prototype.originX = "center";
    fabric.Object.prototype.originY= "center";
    fabric.Canvas.prototype.getAbsoluteCoords = function(object){
      console.log(this);
      console.log(object);
        return {
            left:object.left+this._offset.left,
            top:object.top+this._offset.top
        };
    }
    var btn = this.$refs.btn,
    btnWidth = 85,
    btnHeight = 18;
    function positionBtn(obj){
        var absCoords = canvas.getAbsoluteCoords(obj);
        btn.style.left = (absCoords.left - btnWidth/2)+'px';
        btn.style.top = (absCoords.top - btnHeight/2)+'px';
    }
    fabric.Image.fromURL("8972bd40735fa8d2f0c739e510fb30e240818.jpeg",function(img){
        canvas.add(img.set({left:250,top:250,angle:30}).scale(0.25));
        img.on("moving",()=>positionBtn(img));
        img.on("scaling",()=>positionBtn(img));
        positionBtn(img);
    })
  },
};
</script>
<style>
button{
  position: absolute;
}
</style>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文