fabricjs:操纵选定对象
我尝试更改画布上所有选定对象的颜色。我发现我可以更改组本身的属性(fabricjs:操纵选定对象,fabricjs,Fabricjs,我尝试更改画布上所有选定对象的颜色。我发现我可以更改组本身的属性(this.canvas.getActiveGroup().setFill(…))。 由于我想根据所选对象的类型更改不同的属性,因此无法使用此函数。相反,我尝试迭代所有选定对象并对其进行操作 this.canvas.getActiveGroup().getObjects().forEach(obj => { if(obj instanceof fabric.Path) { obj.setStro
this.canvas.getActiveGroup().setFill(…)
)。由于我想根据所选对象的类型更改不同的属性,因此无法使用此函数。相反,我尝试迭代所有选定对象并对其进行操作
this.canvas.getActiveGroup().getObjects().forEach(obj =>
{
if(obj instanceof fabric.Path)
{
obj.setStroke(color);
}
else
{
obj.setFill(color);
}
});
this.canvas.renderAll();
颜色将更改,但不幸的是,取消选择对象后,所有样式都将更改回原来的样式。我认为样式将应用于组,因为再次选择时,所有元素将以正确的颜色显示 当我以前删除activeGroup(
this.canvas.discardActiveGroup()
)时,它会工作,但会带来一些其他问题
顺便说一句:检查器(开发工具)显示正确的颜色。调整特定元素的大小后,它还将更新其颜色
有没有人遇到过类似的问题并知道解决方案
致以最诚挚的问候丹尼尔演示
var color='black';
函数changeColor(){
var r=getrandom(0,225);
var g=GetRandomArbital(0,225);
VarB=GetRandomArbital(0,225);
颜色='rgb('+r+'、'+g+'、'+b+');
fillColorOb();
}
函数GetRandomArbital(最小值、最大值){
返回Math.floor(Math.random()*(max-min+1))+min;
}
var c=newfabric.Canvas('Canvas');
c、 添加(新织物。圆圈)({
左:50,,
前50名,
半径:50,
原文:“中心”,
原文:'中心',
}))
c、 添加(新织物。圆圈)({
左:50,,
排名:150,
半径:50,
原文:“中心”,
原文:'中心',
}))
c、 添加(新织物。圆圈)({
左:150,
前100名,
半径:50,
原文:“中心”,
原文:'中心',
}))
c、 renderAll();
函数fillColorOb(){
var objs=c.getActiveGroup();
如果(!objs)返回;
forEachObject(函数(obj){
if(结构路径的obj实例){
目标设定行程(颜色);
}否则{
对象设置填充(颜色);
}
c、 renderAll();
});
}
fabric.Group.prototype.\u restoreObjectState=函数(对象){
此.realizeTransform(对象);
setCoords();
object.hasControls=object.\u origHasControls;
删除对象。\u原控件;
set('active',false);
删除object.group;
object.dirty=true;//它将在下一次renderAll()调用时呈现
归还这个;
}
颜色
fabricjs 1.7.9版之前,我一直在测试,这似乎是一个bug检查。非常感谢。肮脏的旗帜做到了。我只需调用renderAll()
将所有选定对象标记为脏对象,然后再次调用renderAll()
。@dkirchhof您添加了该函数?