Exemple #1
0
        public void Insert(int position, DrawRect rect)
        {
            int pos = position <0 ? 0 : position> Count ? Count : position;

            if (pos == Count)
            {
                Add(rect);
                return;
            }

            DrawRectChild child = new DrawRectChild();

            child.Child        = rect;
            rect.LockControl   = m_LockControl;
            rect.m_Parent      = this;
            rect.m_ParentIndex = pos;
            m_childs.Insert(pos, child);
            m_childs[pos].RectForChild = m_childs[pos + 1].RectForChild;
            for (int i = pos + 1; i < Count; i++)
            {
                m_childs[i].Child.m_ParentIndex = i;
            }
            RealignChilds(pos, false);

            DoItemAdded(rect);
        }
Exemple #2
0
        private Rectangle CalcAlign(DrawRectChild child, ref Rectangle freeRect)
        {
            child.RectForChild = freeRect;
            var newRect = child.Child.Rect;

            if (child.Child.Visible)
            {
                switch (child.Child.m_alignment)
                {
                case RectAlignment.Absolute:
                    var r = GetClientRect();
                    newRect = new Rectangle(r.X + child.Child.m_pos.X,
                                            r.Y + child.Child.m_pos.Y, child.Child.Size.Width,
                                            child.Child.Size.Height);
                    break;

                case RectAlignment.Center:
                    newRect = new Rectangle(m_rect.X + (m_rect.Width - child.Child.Width) / 2,
                                            m_rect.Y + (m_rect.Height - child.Child.Height) / 2, child.Child.Width,
                                            child.Child.Height);
                    break;

                case RectAlignment.Left:
                    newRect = new Rectangle(freeRect.Location,
                                            new Size(child.Child.Width, freeRect.Height));
                    freeRect = new Rectangle(freeRect.X + newRect.Width, freeRect.Y,
                                             freeRect.Width - newRect.Width, freeRect.Height);
                    break;

                case RectAlignment.Right:
                    newRect = new Rectangle(freeRect.Left + freeRect.Width - child.Child.Width,
                                            freeRect.Y, child.Child.Width, freeRect.Height);
                    freeRect = new Rectangle(freeRect.Location,
                                             new Size(freeRect.Width - newRect.Width, freeRect.Height));
                    break;

                case RectAlignment.Top:
                    newRect = new Rectangle(freeRect.Location,
                                            new Size(freeRect.Width, child.Child.Height));
                    freeRect = new Rectangle(freeRect.X, freeRect.Y + newRect.Height, freeRect.Width,
                                             freeRect.Height - newRect.Height);
                    break;

                case RectAlignment.Bottom:
                    newRect = new Rectangle(freeRect.X,
                                            freeRect.Y + freeRect.Height - child.Child.Height,
                                            freeRect.Width, child.Child.Height);
                    freeRect = new Rectangle(freeRect.Location,
                                             new Size(freeRect.Width, freeRect.Height - newRect.Height));
                    break;

                case RectAlignment.Fill:
                    newRect = freeRect;
                    break;
                }
            }
            return(newRect);
        }
Exemple #3
0
        public void Add(DrawRect rect)
        {
            if (m_childs == null)
            {
                m_childs   = new List <DrawRectChild>();
                m_freeRect = GetClientRect();
            }

            DrawRectChild child = new DrawRectChild();

            child.Child        = rect;
            rect.LockControl   = m_LockControl;
            rect.m_Parent      = this;
            rect.m_ParentIndex = m_childs.Count;
            m_childs.Add(child);
            DoAlign(child.Child, CalcAlign(child, ref m_freeRect), false);

            DoItemAdded(rect);
        }