feat: 优化导出功能,清除选中状态以避免导出问题,调整裁剪路径以保持准确性

This commit is contained in:
bighuixiang
2025-07-18 01:28:31 +08:00
parent 074c336ca8
commit 22ee9c6cf1
3 changed files with 16 additions and 1 deletions

View File

@@ -776,6 +776,9 @@ export class CanvasManager {
}
try {
// 如果当前有选中对象,先清除选中状态 否则导出有问题
this.canvas.discardActiveObject(); // 清除选中状态
this.canvas.renderAll(); // 重新渲染画布
// 自动设置红绿图模式相关参数
const enhancedOptions = {
...options,

View File

@@ -263,7 +263,8 @@ export class ExportManager {
// 递归收集子图层的对象
if (layer.children && layer.children.length > 0) {
for (const childLayer of layer.children) {
for (let i = layer.children.length - 1; i >= 0; i--) {
const childLayer = layer.children[i];
const childObjects = this._collectObjectsFromLayer(childLayer);
realObjects.push(...childObjects);
}

View File

@@ -805,6 +805,17 @@ const renderContentToImage = async ({ fabricObjects, selectionBounds, qualityMul
evented: false,
});
// 如果有裁剪路径,也需要调整裁剪路径
if (clonedObj.clipPath) {
clonedObj.clipPath.set({
left: (clonedObj.clipPath.left - selectionBounds.left) * qualityMultiplier,
top: (clonedObj.clipPath.top - selectionBounds.top) * qualityMultiplier,
scaleX: (clonedObj.clipPath.scaleX || 1) * qualityMultiplier,
scaleY: (clonedObj.clipPath.scaleY || 1) * qualityMultiplier,
});
clonedObj.clipPath.setCoords(); // 更新裁剪路径坐标
}
contentCanvas.add(clonedObj);
}