印花其他属性同步

This commit is contained in:
李志鹏
2026-01-19 11:16:23 +08:00
parent 28bc0f2f0e
commit e81049c332

View File

@@ -1575,29 +1575,46 @@ export class CanvasManager {
let item = printTrimsLayers[index]; let item = printTrimsLayers[index];
let id = generateId("layer_image_"); let id = generateId("layer_image_");
let name = item.name; let name = item.name;
let blendMode = BlendMode.MULTIPLY;
if(item.level2Type === "Embroidery") blendMode = BlendMode.NORMAL;// 元素正常
let image = await new Promise(resolve => { let image = await new Promise(resolve => {
fabric.Image.fromURL(item.path, (fabricImage)=>{ fabric.Image.fromURL(item.path, (fabricImage)=>{
const left = flLeft - flWidth * flScaleX / 2 + (item.location?.[0] || 0) * flScaleX resolve(fabricImage);
const top = flTop - flHeight * flScaleY / 2 + (item.location?.[1] || 0) * flScaleY }, { crossOrigin: "anonymous" });
const scaleX = flWidth * (item.scale?.[0] || 1) / fabricImage.width * flScaleX })
const scaleY = flHeight * (item.scale?.[1] || 1) / fabricImage.height * flScaleY let left = flLeft - flWidth * flScaleX / 2 + (item.location?.[0] || 0) * flScaleX
const {x, y} = calculateRotatedTopLeftDeg( let top = flTop - flHeight * flScaleY / 2 + (item.location?.[1] || 0) * flScaleY
fabricImage.width * scaleX, let scaleX = flWidth * (item.scale?.[0] || 1) / image.width * flScaleX
fabricImage.height * scaleY, let scaleY = flHeight * (item.scale?.[1] || 1) / image.height * flScaleY
let {x, y} = calculateRotatedTopLeftDeg(
image.width * scaleX,
image.height * scaleY,
left, left,
top, top,
0, 0,
item.angle || 0 item.angle || 0
) )
const angle = item.angle || 0 let angle = item.angle || 0
fabricImage.set({
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, left: x,
top: y, top: y,
scaleX: scaleX, scaleX: scaleX,
scaleY: scaleY, scaleY: scaleY,
angle: angle, angle: angle,
opacity: opacity,
flipX: flipX,
flipY: flipY,
globalCompositeOperation: blendMode,
id: id, id: id,
layerId: id, layerId: id,
layerName: name, layerName: name,
@@ -1605,11 +1622,7 @@ export class CanvasManager {
hasControls: true, hasControls: true,
hasBorders: true, hasBorders: true,
isPrintTrims: true, isPrintTrims: true,
globalCompositeOperation: blendMode,
}); });
resolve(fabricImage);
}, { crossOrigin: "anonymous" });
})
this.canvas.add(image); this.canvas.add(image);
let layer = createLayer({ let layer = createLayer({
id: id, id: id,
@@ -1617,7 +1630,7 @@ export class CanvasManager {
type: LayerType.BITMAP, type: LayerType.BITMAP,
visible: true, visible: true,
locked: false, locked: false,
opacity: 1.0, opacity: opacity,
isPrintTrims: true, isPrintTrims: true,
blendMode: blendMode, blendMode: blendMode,
fabricObjects: [image.toObject(["id", "layerId", "layerName"])], fabricObjects: [image.toObject(["id", "layerId", "layerName"])],