/// <summary> /// 呈递修改的默认实现,本方法将呈递撤销栈中的修改操作,并清空撤销/重做栈; /// </summary> /// <param name="canvasContext"></param> protected override void OnCommit() { if (CanvasContext == null) { return; } //若撤销栈为空,则不进行呈递修改操作; if (UndoDrawObjects.Count == 0) { return; } if (CanvasContext.ActiveLayer == null) { return; } var commitParams = new UniqueTypeEditToolCommitParams(new List <DrawObject>(UndoDrawObjects.ToArray())) { AppliedLayer = CanvasContext.ActiveLayer }; OnCommitParams(commitParams); if (commitParams.Cancel) { return; } if (commitParams.AppliedLayer == null) { return; } if (commitParams.AddedDrawObjects.Count == 0) { return; } //将撤销栈拷贝后呈递事务; var addedDrawObjects = commitParams.AddedDrawObjects.ToArray(); var appliedLayer = commitParams.AppliedLayer; appliedLayer.AddDrawObjects(addedDrawObjects); var transAction = new StandardEditTransaction( () => { appliedLayer.RemoveDrawObjects(addedDrawObjects); }, () => { appliedLayer.AddDrawObjects(addedDrawObjects); } ); CommitTransaction(transAction); //清除撤销/撤销栈; UndoDrawObjects.Clear(); RedoDrawObjects.Clear(); }
protected virtual void OnCommitParams(UniqueTypeEditToolCommitParams commitParams) { }