我如何使用 if isType() 为画布上的每个对象使用fabric js?

沙巴

我试图在画布上显示每个对象的某些属性,但我很难编写代码来这样做。EG 我想要下面的代码来识别形状、文本和图像对象之间的区别,并根据类型显示属性。

console.log 的属性:

对于画布上的每个对象,检查是否 -

  • 图像,然后是 URL(来源)和比例 <= 我很难显示图像的来源和名称。
  • 文本然后字体系列、字体大小、颜色、比例
  • 形状然后缩放和颜色

我需要添加/删除/更改什么才能使其工作?

这是一个 JS 小提琴示例:https : //jsbin.com/vevihikefo/1/edit? html,js,console,output

canvas.getObjects().forEach(object=>{
    if(object.isType('xyz')) { // object is a shape
      console.log(object.scaleX, object.fill);
    } else if(object.isType('text')) { // object is a text
      console.log(object.text, object.fontFamily, object.fontSize*3, object.scaleX, object.fill);
    } else { // object is an image
      console.log(object.name, object.scaleX, object.fill);
    }
})
ɢʀᴜɴᴛ

有两件事需要添加/更改,以使其工作......

  • 更改object.isType('xyz')!object.isType('text') && !object.isType('image')      (因为没有任何类型称为 'xyz' )
  • 将用于在函数中获取对象属性的整个代码包装起来,在图像加载时调用该函数,以正确获取图像对象属性。

fabric.Object.prototype.objectCaching = false;
var canvas = new fabric.Canvas('canvas');
canvas.add(new fabric.Text('foo', {
    fontFamily: 'Roboto',
    left: 100,
    top: 100,
    fontSize: 25
}));
canvas.add(new fabric.Text('help', {
    fontFamily: 'Roboto',
    left: 100,
    top: 200,
    fontSize: 25
}));
canvas.add(new fabric.Triangle({
    fill: 'green',
    left: 200,
    top: 200
}));
fabric.Image.fromURL('http://fabricjs.com/assets/pug_small.jpg', function(myImg) {
    //i create an extra var for to change some image properties
    var img1 = myImg.set({
        left: 200,
        top: 0,
        width: 150,
        height: 150
    });
    canvas.add(img1);
    getAttributes();
});
canvas.renderAll();

function getAttributes() {
    canvas.getObjects().forEach(object => {
        if (!object.isType('text') && !object.isType('image')) { // object is a shape
            console.log(object.scaleX, object.fill);
        } else if (object.isType('text')) { // object is a text
            console.log(object.text, object.fontFamily, object.fontSize * 3, object.scaleX, object.fill);
        } else if (object.isType('image')) { // object is an image
            console.log(object.name, object.scaleX, object.fill);
        }
    });
}
<script src="https://rawgit.com/kangax/fabric.js/master/dist/fabric.js"></script>
<canvas id="canvas" width="800" height="600" style="border: 1px solid #d3d3d3; position: absolute;">
Your browser does not support the canvas element.
</canvas>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Fabric.js选择画布上的所有对象

来自分类Dev

如何使用JS为画布中的每个对象获取随机颜色?

来自分类Dev

使用fabric.js从矩形区域获取对象并将其绘制到画布上

来自分类Dev

使用fabric.js从矩形区域获取对象并将其绘制到画布上

来自分类Dev

使用fabric.js在画布上免费绘制

来自分类Dev

SVG无法使用Fabric.js在画布上正确渲染

来自分类Dev

使用fabric.js更改画布上的绘图光标

来自分类Dev

使用fabric.js的全屏画布模式

来自分类Dev

如何使用Fabric.js实现画布平移

来自分类Dev

如何使用按钮从Fabric.js画布中删除图像

来自分类Dev

如何使用按钮从Fabric.js画布中删除图像

来自分类Dev

如何在fabric.js中使用画布保存图像

来自分类Dev

我如何使用p5.js在画布上绘制图块

来自分类Dev

我如何使用Commonmark.js

来自分类Dev

如何在画布上更改SVG颜色-Fabric.js

来自分类Dev

如何使用 js 更改位于画布中的对象的 css 属性?

来自分类Dev

如何使用 Anime.JS 为我的元素设置动画?

来自分类Dev

我如何使用 js 为列表项倒计时?

来自分类Dev

我如何使用下划线js合并对象数组

来自分类Dev

使用Angular.js在画布上绘图

来自分类Dev

如何使用Scala-JS在html画布上绘制

来自分类Dev

如何使用Scala-JS在html画布上绘制

来自分类Dev

我如何在Vue JS中使用swiper.js

来自分类Dev

使用Fabric.js启用和禁用画布的鼠标事件

来自分类Dev

无法在画布上添加新对象(fabric.js)

来自分类Dev

使用三个js更改对象在画布上的位置

来自分类Dev

IsType <T>和IsType(object,object)抛出IsTypeException

来自分类Dev

使用mouse:Fabric JS:覆盖动画对象

来自分类Dev

如何使用fabric.js在画布上画一条线

Related 相关文章

热门标签

归档