feat: 优化选区功能,修复部分bug
This commit is contained in:
@@ -35,11 +35,13 @@ export class CutSelectionToNewLayerCommand extends CompositeCommand {
|
||||
this.highResolutionEnabled = options.highResolutionEnabled !== false; // 默认启用
|
||||
this.baseResolutionScale = options.baseResolutionScale || 2; // 基础分辨率倍数
|
||||
|
||||
this.groupId = options.groupId || `cutout-group-${Date.now()}`;
|
||||
this.groupId = options.groupId || generateId("lasso-copy-group-");
|
||||
this.groupName = options.groupName || `选区组`;
|
||||
this.groupLayer = null; // 新增:保存组图层的引用
|
||||
this.originalLayersLength = 0; // 新增:保存原始图层数量
|
||||
|
||||
this.clippingMaskId = generateId("clipping-mask-");
|
||||
|
||||
// 在初始化时克隆保存选区对象,避免撤销后重做时获取不到选区对象
|
||||
this._clonedSelectionObject = null;
|
||||
this._initializeClonedSelection();
|
||||
@@ -105,6 +107,16 @@ export class CutSelectionToNewLayerCommand extends CompositeCommand {
|
||||
return false;
|
||||
}
|
||||
|
||||
const clippingMask = fabric.util.object.clone(selectionObject);
|
||||
clippingMask.set({
|
||||
id: this.clippingMaskId,
|
||||
selectable: false,
|
||||
evented: false,
|
||||
hasControls: false,
|
||||
// layerId: this.groupId,
|
||||
visible: true,
|
||||
});
|
||||
|
||||
// 获取选区边界信息用于后续定位
|
||||
const selectionBounds = selectionObject.getBoundingRect(true, true);
|
||||
|
||||
@@ -185,12 +197,8 @@ export class CutSelectionToNewLayerCommand extends CompositeCommand {
|
||||
selectLayer.fabricObjects = [
|
||||
this.fabricImage.toObject("id", "layerId", "layerName", "parentId"),
|
||||
];
|
||||
this.groupLayer.clippingMask = this.fabricImage.toObject(
|
||||
"id",
|
||||
"layerId",
|
||||
"layerName",
|
||||
"parentId"
|
||||
); // 设置组图层的fabricObject为遮罩图像
|
||||
|
||||
this.groupLayer.clippingMask = clippingMask.toObject(["id", "layerId"]); // 设置组图层的fabricObject为遮罩图像
|
||||
|
||||
this.groupLayer.children.push(selectLayer);
|
||||
// 插入新组图层
|
||||
|
||||
Reference in New Issue
Block a user