深度画布锁定

This commit is contained in:
lzp
2026-03-18 13:56:27 +08:00
parent 33901f7609
commit 0f99ea809d
6 changed files with 68 additions and 15 deletions

View File

@@ -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)