印花其他属性同步

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

View File

@@ -1575,41 +1575,54 @@ 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
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); resolve(fabricImage);
}, { crossOrigin: "anonymous" }); }, { 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); 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"])],