コード例 #1
0
        /// <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);
        }
コード例 #2
0
        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 = "合并矩形";
        }
コード例 #3
0
        /// <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);
        }