From e81049c33221d98fa8b03e8a98ef24696d42e5b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BF=97=E9=B9=8F?= <2916022834@qq.com> Date: Mon, 19 Jan 2026 11:16:23 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=B0=E8=8A=B1=E5=85=B6=E4=BB=96=E5=B1=9E?= =?UTF-8?q?=E6=80=A7=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CanvasEditor/managers/CanvasManager.js | 75 +++++++++++-------- 1 file changed, 44 insertions(+), 31 deletions(-) diff --git a/src/component/Canvas/CanvasEditor/managers/CanvasManager.js b/src/component/Canvas/CanvasEditor/managers/CanvasManager.js index f68fb393..9c7bb1cc 100644 --- a/src/component/Canvas/CanvasEditor/managers/CanvasManager.js +++ b/src/component/Canvas/CanvasEditor/managers/CanvasManager.js @@ -1575,41 +1575,54 @@ export class CanvasManager { let item = printTrimsLayers[index]; let id = generateId("layer_image_"); let name = item.name; - let blendMode = BlendMode.MULTIPLY; - if(item.level2Type === "Embroidery") blendMode = BlendMode.NORMAL;// 元素正常 let image = await new Promise(resolve => { fabric.Image.fromURL(item.path, (fabricImage)=>{ - const left = flLeft - flWidth * flScaleX / 2 + (item.location?.[0] || 0) * flScaleX - const top = flTop - flHeight * flScaleY / 2 + (item.location?.[1] || 0) * flScaleY - const scaleX = flWidth * (item.scale?.[0] || 1) / fabricImage.width * flScaleX - const scaleY = flHeight * (item.scale?.[1] || 1) / fabricImage.height * flScaleY - const {x, y} = calculateRotatedTopLeftDeg( - fabricImage.width * scaleX, - fabricImage.height * scaleY, - left, - top, - 0, - item.angle || 0 - ) - const angle = item.angle || 0 - fabricImage.set({ - left: x, - top: y, - scaleX: scaleX, - scaleY: scaleY, - angle: angle, - id: id, - layerId: id, - layerName: name, - selectable: true, - hasControls: true, - hasBorders: true, - isPrintTrims: true, - globalCompositeOperation: blendMode, - }); resolve(fabricImage); }, { crossOrigin: "anonymous" }); }) + let left = flLeft - flWidth * flScaleX / 2 + (item.location?.[0] || 0) * flScaleX + let top = flTop - flHeight * flScaleY / 2 + (item.location?.[1] || 0) * flScaleY + let scaleX = flWidth * (item.scale?.[0] || 1) / image.width * flScaleX + let scaleY = flHeight * (item.scale?.[1] || 1) / image.height * flScaleY + let {x, y} = calculateRotatedTopLeftDeg( + image.width * scaleX, + image.height * scaleY, + left, + top, + 0, + item.angle || 0 + ) + let angle = item.angle || 0 + + let opacity = 1 + let flipX = false; + let flipY = false; + let blendMode = BlendMode.MULTIPLY; + if(item.level2Type === "Embroidery") blendMode = BlendMode.NORMAL;// 元素正常 + if(item.object){ + opacity = item.object.opacity + flipX = item.object.flipX + flipY = item.object.flipY + if(item.object.blendMode) blendMode = item.object.blendMode; + } + image.set({ + left: x, + top: y, + scaleX: scaleX, + scaleY: scaleY, + angle: angle, + opacity: opacity, + flipX: flipX, + flipY: flipY, + globalCompositeOperation: blendMode, + id: id, + layerId: id, + layerName: name, + selectable: true, + hasControls: true, + hasBorders: true, + isPrintTrims: true, + }); this.canvas.add(image); let layer = createLayer({ id: id, @@ -1617,7 +1630,7 @@ export class CanvasManager { type: LayerType.BITMAP, visible: true, locked: false, - opacity: 1.0, + opacity: opacity, isPrintTrims: true, blendMode: blendMode, fabricObjects: [image.toObject(["id", "layerId", "layerName"])],