深度画布

This commit is contained in:
lzp
2026-03-30 10:56:26 +08:00
parent b7d8f9fed0
commit d6c8de770a
3 changed files with 14 additions and 7 deletions

View File

@@ -183,11 +183,8 @@
if (!activeLayerId.value) return if (!activeLayerId.value) return
layerManager.deleteLayerById(activeLayerId.value) layerManager.deleteLayerById(activeLayerId.value)
} }
const onWorkbench = async () => { const onWorkbench = () => {
exportCanvasToImage(canvasManager.canvas).then((url) => { emit('workbench')
const { canvas, images } = canvasManager.getCanvasDisUrlJSON()
emit('workbench', { url, canvas, images })
})
} }
</script> </script>

View File

@@ -8,7 +8,7 @@
<details-panel /> <details-panel />
<brush-control-panel :currentTool="toolManager.currentTool.value" /> <brush-control-panel :currentTool="toolManager.currentTool.value" />
<ai-selectbox-panel :currentTool="toolManager.currentTool.value" /> <ai-selectbox-panel :currentTool="toolManager.currentTool.value" />
<depth-header-tools @export="exportCanvas" @workbench="(v) => emit('workbench', v)" /> <depth-header-tools @export="exportCanvas" @workbench="onWorkbench" />
<zoom <zoom
:zoom="canvasManager.currentZoom.value / 100" :zoom="canvasManager.currentZoom.value / 100"
@@ -52,6 +52,12 @@
default: () => ({}) default: () => ({})
} }
}) })
const onWorkbench = async () => {
exportCanvasToImage(canvasManager.canvas).then((url) => {
const { canvas, images } = canvasManager.getCanvasDisUrlJSON()
emit('workbench', { url, canvas, images })
})
}
// 准备就绪 // 准备就绪
const isReady = ref(false) const isReady = ref(false)
@@ -78,7 +84,7 @@
provide('toolManager', toolManager) provide('toolManager', toolManager)
//键盘事件管理器 //键盘事件管理器
const keyEventManager = new KeyEventManager({ stateManager }) const keyEventManager = new KeyEventManager({ stateManager, onWorkbench })
stateManager.setManager({ keyEventManager }) stateManager.setManager({ keyEventManager })
provide('keyEventManager', keyEventManager) provide('keyEventManager', keyEventManager)

View File

@@ -1,7 +1,9 @@
export class KeyEventManager { export class KeyEventManager {
stateManager: any stateManager: any
onWorkbench: any
constructor(options) { constructor(options) {
this.stateManager = options.stateManager; this.stateManager = options.stateManager;
this.onWorkbench = options.onWorkbench;
this._handleKeyDown = this.handleKeyDown.bind(this) this._handleKeyDown = this.handleKeyDown.bind(this)
} }
onMounted() { } onMounted() { }
@@ -9,6 +11,7 @@ export class KeyEventManager {
/** 处理键盘事件 */ /** 处理键盘事件 */
_handleKeyDown: any _handleKeyDown: any
handleKeyDown(event: any) { handleKeyDown(event: any) {
event.preventDefault()
const activeID = this.stateManager.layerManager.activeID.value const activeID = this.stateManager.layerManager.activeID.value
const ctrl = event.ctrlKey ? 'ctrl-' : ""; const ctrl = event.ctrlKey ? 'ctrl-' : "";
const shift = event.shiftKey ? 'shift-' : ""; const shift = event.shiftKey ? 'shift-' : "";
@@ -18,6 +21,7 @@ export class KeyEventManager {
{ key: "ctrl-c", handler: () => this.stateManager.layerManager.copyLayerById(activeID) }, { key: "ctrl-c", handler: () => this.stateManager.layerManager.copyLayerById(activeID) },
{ key: "delete", handler: () => this.stateManager.layerManager.deleteLayerById(activeID) }, { key: "delete", handler: () => this.stateManager.layerManager.deleteLayerById(activeID) },
{ key: "ctrl-z", handler: () => this.stateManager.undoState() }, { key: "ctrl-z", handler: () => this.stateManager.undoState() },
{ key: "ctrl-s", handler: () => this.onWorkbench() },
{ key: "ctrl-shift-z", handler: () => this.stateManager.redoState() }, { key: "ctrl-shift-z", handler: () => this.stateManager.redoState() },
] ]
list.forEach((v: any) => { list.forEach((v: any) => {