深度画布锁定
This commit is contained in:
@@ -41,19 +41,45 @@ export class LayerManager {
|
||||
this.canvasManager.renderAll()
|
||||
}
|
||||
}
|
||||
|
||||
/** 设置图层显示状态 */
|
||||
setLayerVisibleById(id, visible: boolean) {
|
||||
const layer = this.getLayerById(id)
|
||||
if (layer) {
|
||||
layer.visible = visible
|
||||
}
|
||||
const object = this.canvasManager.getObjectById(id)
|
||||
if (object) {
|
||||
object.set({
|
||||
visible: visible
|
||||
})
|
||||
this.canvasManager.renderAll()
|
||||
}
|
||||
if (!layer || !object) return
|
||||
layer.visible = visible
|
||||
object.set({
|
||||
visible: visible
|
||||
})
|
||||
this.canvasManager.renderAll()
|
||||
this.stateManager.recordState()
|
||||
}
|
||||
/** 设置图层锁定状态 */
|
||||
setLayerLockById(id, lock: boolean) {
|
||||
const layer = this.getLayerById(id)
|
||||
const object = this.canvasManager.getObjectById(id)
|
||||
if (!layer || !object) return
|
||||
layer.info.lock = !!lock
|
||||
layer.evented = !lock
|
||||
object.info.lock = !!lock
|
||||
object.set({
|
||||
evented: !lock,
|
||||
selectable: !lock,
|
||||
})
|
||||
if (lock) {
|
||||
// 取消选中对象
|
||||
const e = this.canvasManager.getSelectedObject()
|
||||
if (e) {
|
||||
const objects = [...(e._objects || [e])]
|
||||
if (objects.some(v => v.info?.id === object.info.id)) {
|
||||
this.canvasManager.discardActiveObject()
|
||||
}
|
||||
}
|
||||
}
|
||||
this.canvasManager.renderAll()
|
||||
this.stateManager.recordState()
|
||||
}
|
||||
|
||||
/** 删除指定图层 */
|
||||
deleteLayerById(id, isActive = true) {
|
||||
this.canvasManager.deleteObjectById(id)
|
||||
|
||||
Reference in New Issue
Block a user