/// <summary> /// 是否可以合并被选择的矩形 /// </summary> /// <returns></returns> public bool IsRectMergable() { List <Rect> selectedRects = GetSelectedRects(); Rectangle rectangle = CommonFuns.FindRectsBorder(selectedRects); int rectSquare = 0; ///求面积之和 foreach (Rect rect in selectedRects) { rectSquare += rect.Width * rect.Height; } return(GetSelectedRects().Count >= 2 && (GetDisMergableRects().Count < 1) && rectSquare == rectangle.Width * rectangle.Height); }
public MergeRectCommand(DesignPanel tdPanel) { TDPanel = tdPanel; List <Rect> selectedRects = tdPanel.DrawPanel.ListRect.GetSelectedRects(); Rectangle boundaryRect = CommonFuns.FindRectsBorder(selectedRects); ///保存边界矩形 BoundaryRect = new Rectangle( boundaryRect.X, boundaryRect.Y, boundaryRect.Width, boundaryRect.Height ); CommandInfo = "合并矩形"; }
/// <summary> /// 返回没有被选择之矩形的最大边界中未被选择之矩形和选定却被锁定之矩形 /// </summary> /// <returns></returns> public List <Rect> GetDisMergableRects() { List <Rect> selectedRects = GetSelectedRects(); Rectangle rectangle = CommonFuns.FindRectsBorder(selectedRects); FindRectByRect findRect = new FindRectByRect(rectangle); List <Rect> totalRects = this.SnipRectList.FindAll(findRect.FindInRectPredicate); List <Rect> dismergableRects = CommonFuns.RemainRectList(totalRects, selectedRects);; foreach (Rect rect in selectedRects) { if (rect.IsLocked) { dismergableRects.Add(rect); } } return(dismergableRects); }