gpt4 book ai didi

javascript - 选择 Fabric.js Canvas 上的所有文本对象

转载 作者:行者123 更新时间:2023-12-01 03:53:35 25 4
gpt4 key购买 nike

var canvas = new fabric.Canvas();

// select all objects
function selectAllCanvasObjects(){
var objs = canvas.getObjects().map(function(o) {
return o.set('active', true);
});

var group = new fabric.Group(objs, {
originX: 'center',
originY: 'center'
});

canvas._activeObject = null;

canvas.setActiveGroup(group.setCoords()).renderAll();
}

我有一个 Canvas ,我需要选择所有文本对象并跳过其他对象。这是选择所有对象的代码,如何使其仅选择所有文本对象并跳过其他对象?

最佳答案

以下示例仅选择type'text'的项目。

总结:

  • Fabric JS get 方法允许我们检查正在迭代的当前项目的type

  • 如果type等于'text',那么我们返回该项目

  • 注意我们现在使用 filter 而不是 map,因为我们现在只想返回与 'text' 类型匹配的项目,而不是每个项目

var canvas = new fabric.Canvas('c');

// Add some example shapes
var circle = new fabric.Circle({
radius: 20, fill: 'green', left: 100, top: 100
});
var triangle = new fabric.Triangle({
width: 20, height: 30, fill: 'blue', left: 50, top: 50
});

canvas.add(circle, triangle);

// Add some example text
var text1 = new fabric.Text('hello world', { left: 100, top: 100 });

var text2 = new fabric.Text('test', { left: 0, top: 0 });

canvas.add(text1, text2);

// Select all objects
function selectAllCanvasObjects(){
var objs = canvas.getObjects().filter(function(o) {
if (o.get('type') === 'text') {
return o.set('active', true);
}
});

var group = new fabric.Group(objs, {
originX: 'center',
originY: 'center'
});

canvas._activeObject = null;

canvas.setActiveGroup(group.setCoords()).renderAll();
}

selectAllCanvasObjects();
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.7.8/fabric.min.js"></script>
<canvas id="c"></canvas>

关于javascript - 选择 Fabric.js Canvas 上的所有文本对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42970338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com