同步印花平铺的位置信息
This commit is contained in:
@@ -34,6 +34,7 @@ import {
|
||||
createPatternTransform,
|
||||
getTransformScaleAngle,
|
||||
base64ToCanvas,
|
||||
imageAddGapToCanvas,
|
||||
} from "../utils/helper";
|
||||
import { ChangeFixedImageCommand } from "../commands/ObjectLayerCommands";
|
||||
import { isFunction } from "lodash-es";
|
||||
@@ -1630,38 +1631,57 @@ export class CanvasManager {
|
||||
resolve(tcanvas);
|
||||
}, { crossOrigin: "anonymous" });
|
||||
})
|
||||
let scaleX = fixedLayerObj.width / image.width * (item.scale?.[0] || 1) / 5;
|
||||
let scaleY = fixedLayerObj.height / image.height * (item.scale?.[1] || 1) / 5;
|
||||
let scale = fixedLayerObj.width > fixedLayerObj.height ? scaleX : scaleY;
|
||||
let left = (item.location?.[0] || 0) - image.width * scale / 2
|
||||
let top = (item.location?.[1] || 0) - image.height * scale / 2
|
||||
let scaleX_ = fixedLayerObj.width / image.width * (item.scale?.[0] || 1) / 5;
|
||||
let scaleY_ = fixedLayerObj.height / image.height * (item.scale?.[1] || 1) / 5;
|
||||
let scale = fixedLayerObj.width > fixedLayerObj.height ? scaleX_ : scaleY_;
|
||||
let offsetX = (item.location?.[0] || 0) - image.width * scale / 2
|
||||
let offsetY = (item.location?.[1] || 0) - image.height * scale / 2
|
||||
let top = fixedLayerObj.top - fixedLayerObj.height * fixedLayerObj.scaleY / 2
|
||||
let left = fixedLayerObj.left - fixedLayerObj.width * fixedLayerObj.scaleX / 2
|
||||
let scaleX = fixedLayerObj.scaleX
|
||||
let scaleY = fixedLayerObj.scaleY
|
||||
let opacity = 1
|
||||
let angle = 0
|
||||
let gapX = 0
|
||||
let gapY = 0
|
||||
let fillSource = image
|
||||
if(item.object){
|
||||
top += item.object.top * fixedLayerObj.scaleY
|
||||
left += item.object.left * fixedLayerObj.scaleX
|
||||
scaleX *= item.object.scaleX
|
||||
scaleY *= item.object.scaleY
|
||||
opacity = item.object.opacity
|
||||
angle = item.object.angle
|
||||
gapX = item.object.gapX
|
||||
gapY = item.object.gapY
|
||||
fillSource = imageAddGapToCanvas(image, gapX, gapY);
|
||||
}
|
||||
let rect = new fabric.Rect({
|
||||
id: id,
|
||||
layerId: id,
|
||||
layerName: name,
|
||||
width: fixedLayerObj.width,
|
||||
height: fixedLayerObj.height,
|
||||
top: fixedLayerObj.top - fixedLayerObj.height * fixedLayerObj.scaleY / 2,
|
||||
left: fixedLayerObj.left - fixedLayerObj.width * fixedLayerObj.scaleX / 2,
|
||||
scaleX: fixedLayerObj.scaleX,
|
||||
scaleY: fixedLayerObj.scaleY,
|
||||
top: top,
|
||||
left: left,
|
||||
scaleX: scaleX,
|
||||
scaleY: scaleY,
|
||||
globalCompositeOperation: BlendMode.MULTIPLY,
|
||||
fill: new fabric.Pattern({
|
||||
source: image,
|
||||
source: fillSource,
|
||||
repeat: "repeat",
|
||||
patternTransform: createPatternTransform(scale, item.angle || 0),
|
||||
offsetX: left, // 水平偏移
|
||||
offsetY: top, // 垂直偏移
|
||||
offsetX: offsetX, // 水平偏移
|
||||
offsetY: offsetY, // 垂直偏移
|
||||
}),
|
||||
fill_ : {
|
||||
source: item.path,
|
||||
gapX: 0,
|
||||
gapY: 0,
|
||||
gapX: gapX,
|
||||
gapY: gapY,
|
||||
width: image.width,
|
||||
height: image.height,
|
||||
},
|
||||
isPrintTrims: true,
|
||||
// ...(item.object || {}),
|
||||
});
|
||||
this.canvas.add(rect);
|
||||
let layer = createLayer({
|
||||
|
||||
Reference in New Issue
Block a user