以编程方式调整大小后 fabricjs2 选择错误
fabricjs2 selection error after programmatically resize
我在 angular 6 项目中使用 fabrics v2.4.3。
在我的项目中,我想通过鼠标和通过表单编辑属性来移动和调整某些对象(fabric.Group
)的大小。
问题出在第二种方法上。
我将对象放入 canvas,然后 select 用鼠标编辑它。现在我订阅了表单 valueChanges 以实时应用 selected 对象的新道具。
this.subscription = this.form.valueChanges.subscribe((value)=>{
this.panelView.setConfig(value);
})
这是setConfig方法:
setConfig(config:PanelParameters){
this.config = config;
let param = {
top: this.config.y,
left: this.config.x,
width: this.view.width, //this.config.width,
height: this.view.height,
scaleX: this.config.width/this.view.width,
scaleY: this.config.height/this.view.height,
fill : this.config.background_color
}
this.view.set(param)
for(let obj of this.view.getObjects()){
if( obj instanceof fabric.Rect){
obj.set({
fill: this.config.background_color
})
}else if( obj instanceof fabric.Text ){
obj.set({
fill: this.config.title_text_color
})
}
}
this.canvas.requestRenderAll();
}
现在进入 canvas 对象已正确呈现,但如果我尝试 select
我必须点击旧对象区域。
我做错了什么?
您未接来电 this.view.setCoords()
。
在 fabric.js 中,鼠标交互是根据对象的 oCoords
进行评估的。当您以编程方式设置应导致坐标更改的对象属性时,您必须显式调用 setCoords()
来重新计算它们。参见 When to call setCoords。
我在 angular 6 项目中使用 fabrics v2.4.3。
在我的项目中,我想通过鼠标和通过表单编辑属性来移动和调整某些对象(fabric.Group
)的大小。
问题出在第二种方法上。
我将对象放入 canvas,然后 select 用鼠标编辑它。现在我订阅了表单 valueChanges 以实时应用 selected 对象的新道具。
this.subscription = this.form.valueChanges.subscribe((value)=>{
this.panelView.setConfig(value);
})
这是setConfig方法:
setConfig(config:PanelParameters){
this.config = config;
let param = {
top: this.config.y,
left: this.config.x,
width: this.view.width, //this.config.width,
height: this.view.height,
scaleX: this.config.width/this.view.width,
scaleY: this.config.height/this.view.height,
fill : this.config.background_color
}
this.view.set(param)
for(let obj of this.view.getObjects()){
if( obj instanceof fabric.Rect){
obj.set({
fill: this.config.background_color
})
}else if( obj instanceof fabric.Text ){
obj.set({
fill: this.config.title_text_color
})
}
}
this.canvas.requestRenderAll();
}
现在进入 canvas 对象已正确呈现,但如果我尝试 select 我必须点击旧对象区域。
我做错了什么?
您未接来电 this.view.setCoords()
。
在 fabric.js 中,鼠标交互是根据对象的 oCoords
进行评估的。当您以编程方式设置应导致坐标更改的对象属性时,您必须显式调用 setCoords()
来重新计算它们。参见 When to call setCoords。