Esempio n. 1
0
            public void Union(_Rectangle rectangle)
            {
                _Rectangle result;

                result      = Union(rectangle, this);
                this.X      = result.X;
                this.Y      = result.Y;
                this.Width  = result.Width;
                this.Height = result.Height;
            }
Esempio n. 2
0
            public void Intersect(_Rectangle rectangle)
            {
                _Rectangle result;

                result      = Intersect(rectangle, this);
                this.X      = result.X;
                this.Y      = result.Y;
                this.Width  = result.Width;
                this.Height = result.Height;
            }
Esempio n. 3
0
            public static _Rectangle Intersect(_Rectangle rectangle1, _Rectangle rectangle2)
            {
                HorizontalLine horizontal;
                VerticalLine   vertical;

                horizontal = HorizontalLine.Intersect(rectangle1.Horizontal, rectangle2.Horizontal);
                if (horizontal.IsEmpty)
                {
                    return(Empty);
                }
                vertical = VerticalLine.Intersect(rectangle1.Vertical, rectangle2.Vertical);
                return(vertical.IsEmpty ? Empty : new _Rectangle(horizontal, vertical));
            }
Esempio n. 4
0
        public GraphicRectangle(Color color, int x, int y, int width, int height)
        {
            rect = new _Rectangle(x, y, width, height);

            vertices  = new VertexPositionColor[4];
            lines     = new VertexPositionColor[5];
            triangles = 2;

            Color = color;

            for (int i = 0; i < lines.Length; i++)
            {
                lines[i].Color = Microsoft.Xna.Framework.Color.Black;
            }

            UpdateVertices();
        }
Esempio n. 5
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            Shape      shape = null;
            StackPanel sp    = new StackPanel();
            Random     rand  = new Random();
            var        maxX  = canvas.Height;
            var        maxY  = canvas.Width;

            if (triangl.IsChecked == true)
            {
                if (a.Text != "" & b.Text != "" & c.Text != "")
                {
                    _Triangl t = new _Triangl();
                    t.a   = int.Parse(a.Text);
                    t.b   = int.Parse(b.Text);
                    t.c   = int.Parse(c.Text);
                    t.loc = new Point(x, y);
                    shape = t.Drawing();
                }
            }
            if (circle.IsChecked == true)
            {
                if (a.Text != "")
                {
                    _Circle c = new _Circle();
                    c.r   = int.Parse(a.Text);
                    c.loc = new Point(x, y);
                    shape = c.Drawing();
                }
            }
            if (ellipse.IsChecked == true)
            {
                if (a.Text != "" & b.Text != "")
                {
                    _Ellipse el = new _Ellipse();
                    el.r   = int.Parse(a.Text);
                    el.r2  = int.Parse(b.Text);
                    el.loc = new Point(x, y);
                    shape  = el.Drawing();
                }
            }
            if (square.IsChecked == true)
            {
                if (a.Text != "")
                {
                    _Square s = new _Square();
                    s.a   = int.Parse(a.Text);
                    s.loc = new Point(x, y);
                    shape = s.Drawing();
                }
            }
            if (rectangle.IsChecked == true)
            {
                if (a.Text != "" & b.Text != "")
                {
                    _Rectangle r = new _Rectangle();
                    r.a   = int.Parse(a.Text);
                    r.b   = int.Parse(b.Text);
                    r.loc = new Point(x, y);
                    shape = r.Drawing();
                }
            }
            if (shape != null)
            {
                canvas.Children.Add((UIElement)shape);
                x += 10;
                if (x >= maxX)
                {
                    x  = 0;
                    y += 50;
                }
                if (y >= maxY)
                {
                    y = 0;
                }
            }
        }
Esempio n. 6
0
        private static _Rectangle GetControlMinimumClientRectangle(Control control)
        {
            bool isControlNumericUpDown,
                 useAutoSize,
                 useDock,
                 useMargin,
                 useMinimumSize;
            _Rectangle rectangle;
            ToolStrip  toolStrip;

            if (control == null)
            {
                throw new ArgumentNullException("control");
            }
            isControlNumericUpDown = control is NumericUpDown;
            toolStrip      = control as ToolStrip;
            rectangle      = new _Rectangle(ShouldUseProperty(control, "Location") ? control.Location : Point.Empty, Size.Empty);
            useDock        = ShouldUseProperty(control, "Dock");
            useMargin      = ShouldUseProperty(control, "Margin") && control.Margin != Padding.Empty;
            useAutoSize    = ShouldUseProperty(control, "AutoSize") && control.AutoSize;
            useMinimumSize = ShouldUseProperty(control, "MinimumSize") && !control.MinimumSize.IsEmpty;
            if (useDock)
            {
                if (!useMinimumSize && !useAutoSize && (isControlNumericUpDown || (toolStrip == null ? control.Controls.Count == 0 : toolStrip.Items.Count == 0)))
                {
                    if (control.Dock == DockStyle.None)
                    {
                        rectangle.Size += control.Size;
                    }
                    else
                    {
                        bool isControlScrollable;

                        isControlScrollable = control is ScrollableControl;
                        switch (control.Dock)
                        {
                        case DockStyle.Top:
                            rectangle.Width  += isControlScrollable ? ScrollableControlMinSize : Math.Min(ControlMinSize, control.Width);
                            rectangle.Height += control.Height;
                            break;

                        case DockStyle.Bottom:
                            rectangle.Width += isControlScrollable ? ScrollableControlMinSize : Math.Min(ControlMinSize, control.Width);
                            rectangle.ChangeTopHeight(control.Height, false);
                            break;

                        case DockStyle.Left:
                            rectangle.Width  += control.Width;
                            rectangle.Height += isControlScrollable ? ScrollableControlMinSize : Math.Min(ControlMinSize, control.Height);
                            break;

                        case DockStyle.Right:
                            rectangle.ChangeLeftWidth(control.Width, false);
                            rectangle.Height += isControlScrollable ? ScrollableControlMinSize : Math.Min(ControlMinSize, control.Height);
                            break;

                        case DockStyle.Fill:
                            rectangle.Size += isControlScrollable
                                                  ? new Size(ScrollableControlMinSize, ScrollableControlMinSize)
                                                  : new Size(Math.Min(ControlMinSize, control.Width), Math.Min(ControlMinSize, control.Height));
                            break;
                        }
                    }
                }
                if (useMargin && control.Dock != DockStyle.Fill)
                {
                    switch (control.Dock)
                    {
                    case DockStyle.None:
                        rectangle.ChangeLeftWidthTopHeight(control.Margin.Left, control.Margin.Top, false);
                        rectangle.Width  += control.Margin.Right;
                        rectangle.Height += control.Margin.Bottom;
                        break;

                    case DockStyle.Top:
                        rectangle.Height += control.Margin.Bottom;
                        break;

                    case DockStyle.Bottom:
                        rectangle.ChangeTopHeight(control.Margin.Top, false);
                        break;

                    case DockStyle.Left:
                        rectangle.Width += control.Margin.Right;
                        break;

                    case DockStyle.Right:
                        rectangle.ChangeLeftWidth(control.Margin.Left, false);
                        break;
                    }
                }
            }
            else if (useMargin)
            {
                rectangle.ChangeLeftWidthTopHeight(control.Margin.Left, control.Margin.Top, false);
                rectangle.Width  += control.Margin.Right;
                rectangle.Height += control.Margin.Bottom;
            }
            if (useAutoSize)
            {
                rectangle.Size += control.PreferredSize;
            }
            else if (useMinimumSize)
            {
                rectangle.Size += control.MinimumSize;
            }
            else
            {
                if (ShouldUseProperty(control, "Padding") && control.Padding != Padding.Empty)
                {
                    rectangle.Size += control.Padding.Size;
                    rectangle.Offset(-control.Padding.Left, -control.Padding.Top);
                }
                if (!isControlNumericUpDown)
                {
                    SplitContainer splitContainer;

                    //if (toolStrip == null) {
                    splitContainer = control as SplitContainer;
                    if (splitContainer == null)
                    {
                        //{
                        //    List<HorizontalLine> control_controlsGroups_horizontal;
                        //    List<VerticalLine> control_controlsGroups_vertical;

                        //    control_controlsGroups_horizontal = new List<HorizontalLine>();
                        //    control_controlsGroups_vertical = new List<VerticalLine>();
                        //    foreach (Control _control in control.Controls) {
                        //        int last__control_controlGroup_index_horizontal,
                        //            last__control_controlGroup_index_vertical;
                        //        _Rectangle _control_minClientRectangle;

                        //        if (!_control.Visible) {
                        //            continue;
                        //        }
                        //        last__control_controlGroup_index_horizontal = -1;
                        //        last__control_controlGroup_index_vertical = -1;
                        //        _control_minClientRectangle = GetControlMinimumClientRectangle(_control);
                        //        for (int i = 0; i < control_controlsGroups_horizontal.Count; i++) {
                        //            HorizontalLine control_controlsGroup_horizontal;

                        //            control_controlsGroup_horizontal = control_controlsGroups_horizontal[i];
                        //            if (!control_controlsGroup_horizontal.IntersectsWith(_control_minClientRectangle.Horizontal)) {
                        //                continue;
                        //            }
                        //            control_controlsGroup_horizontal.Union(_control_minClientRectangle.Horizontal);
                        //            if (last__control_controlGroup_index_horizontal > -1) {
                        //                control_controlsGroup_horizontal.Union(control_controlsGroups_horizontal[last__control_controlGroup_index_horizontal]);
                        //                control_controlsGroups_horizontal.RemoveAt(last__control_controlGroup_index_horizontal);
                        //                i--;
                        //            }
                        //            control_controlsGroups_horizontal[i] = control_controlsGroup_horizontal;
                        //            last__control_controlGroup_index_horizontal = i;
                        //        }
                        //        for (int i = 0; i < control_controlsGroups_vertical.Count; i++) {
                        //            VerticalLine control_controlsGroup_vertical;

                        //            control_controlsGroup_vertical = control_controlsGroups_vertical[i];
                        //            if (!control_controlsGroup_vertical.IntersectsWith(_control_minClientRectangle.Vertical)) {
                        //                continue;
                        //            }
                        //            control_controlsGroup_vertical.Union(_control_minClientRectangle.Vertical);
                        //            if (last__control_controlGroup_index_vertical > -1) {
                        //                control_controlsGroup_vertical.Union(control_controlsGroups_vertical[last__control_controlGroup_index_vertical]);
                        //                control_controlsGroups_vertical.RemoveAt(last__control_controlGroup_index_vertical);
                        //                i--;
                        //            }
                        //            control_controlsGroups_vertical[i] = control_controlsGroup_vertical;
                        //            last__control_controlGroup_index_vertical = i;
                        //        }
                        //        if (last__control_controlGroup_index_horizontal == -1) {
                        //            control_controlsGroups_horizontal.Add(_control_minClientRectangle.Horizontal);
                        //        }
                        //        if (last__control_controlGroup_index_vertical == -1) {
                        //            control_controlsGroups_vertical.Add(_control_minClientRectangle.Vertical);
                        //        }
                        //    }
                        //    //control_controlsGroups_horizontal.Sort(
                        //    //                                       (horizontalLine1, horizontalLine2) =>
                        //    //                                       horizontalLine1.Left == horizontalLine2.Left
                        //    //                                       ? horizontalLine1.Width.CompareTo(horizontalLine2.Width)
                        //    //                                       : horizontalLine1.Left.CompareTo(horizontalLine2.Left));
                        //    //control_controlsGroups_vertical.Sort(
                        //    //                                     (verticalLine1, verticalLine2) =>
                        //    //                                     verticalLine1.Top == verticalLine2.Top
                        //    //                                     ? verticalLine1.Height.CompareTo(verticalLine2.Height)
                        //    //                                     : verticalLine1.Top.CompareTo(verticalLine2.Top));
                        //    //if (control_controlsGroups_horizontal.Count > 0) {
                        //    //    rectangle.Width += control_controlsGroups_horizontal[control_controlsGroups_horizontal.Count - 1].Right;
                        //    //}
                        //    //if (control_controlsGroups_vertical.Count > 0) {
                        //    //    rectangle.Height += control_controlsGroups_vertical[control_controlsGroups_vertical.Count - 1].Bottom;
                        //    //}
                        //    {
                        //        HorizontalLine control_controlsGroups_total_horizontal;
                        //        VerticalLine control_controlsGroups_total_vertical;

                        //        control_controlsGroups_total_horizontal = HorizontalLine.Empty;
                        //        control_controlsGroups_total_vertical = VerticalLine.Empty;
                        //        foreach (HorizontalLine horizontalLine in control_controlsGroups_horizontal) {
                        //            if (control_controlsGroups_total_horizontal == HorizontalLine.Empty) {
                        //                control_controlsGroups_total_horizontal = horizontalLine;
                        //            }
                        //            else {
                        //                control_controlsGroups_total_horizontal.Union(horizontalLine);
                        //            }
                        //        }
                        //        foreach (VerticalLine verticalLine in control_controlsGroups_vertical) {
                        //            if (control_controlsGroups_total_vertical == VerticalLine.Empty) {
                        //                control_controlsGroups_total_vertical = verticalLine;
                        //            }
                        //            else {
                        //                control_controlsGroups_total_vertical.Union(verticalLine);
                        //            }
                        //        }
                        //        rectangle.Width += control_controlsGroups_total_horizontal.Right;
                        //        rectangle.Height += control_controlsGroups_total_vertical.Bottom;
                        //    }
                        //}
                        {
                            Form form;

                            form = control as Form;
                            if (form == null)
                            {
                                if (control is ListBox)
                                {
                                    rectangle.Size += LstBox_Borders_CombinedSize;
                                }
                                else if (control is SplitterPanel)
                                {
                                    rectangle.Size += SpltPnl_Borders_Combined;
                                }
                            }
                            else
                            {
                                if (form.FormBorderStyle != FormBorderStyle.None)
                                {
                                    rectangle.Size += Frm_Borders_CombinedSize;
                                }
                                if (form.Controls.Count > 0)
                                {
                                    rectangle.Size += Frm_Padding_Size;
                                }
                                if (form.TopLevel)
                                {
                                    Menu menu;

                                    menu = form.Menu;
                                    if (menu != null && menu.MenuItems.Count > 0)
                                    {
                                        rectangle.Height += Frm_MainMenu_Height;
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        _Rectangle splitContainer_panel1_minimumSizeRectangle,
                                   splitContainer_panel2_minimumSizeRectangle;

                        splitContainer_panel1_minimumSizeRectangle = GetControlMinimumClientRectangle(splitContainer.Panel1);
                        splitContainer_panel2_minimumSizeRectangle = GetControlMinimumClientRectangle(splitContainer.Panel2);
                        if (splitContainer.Orientation == Orientation.Horizontal)
                        {
                            rectangle.Width  += Math.Max(splitContainer_panel1_minimumSizeRectangle.Width, splitContainer_panel2_minimumSizeRectangle.Width);
                            rectangle.Height += splitContainer_panel1_minimumSizeRectangle.Height + splitContainer_panel2_minimumSizeRectangle.Height;
                        }
                        else
                        {
                            rectangle.Width  += splitContainer_panel1_minimumSizeRectangle.Width + splitContainer_panel2_minimumSizeRectangle.Width;
                            rectangle.Height += Math.Max(splitContainer_panel1_minimumSizeRectangle.Height, splitContainer_panel2_minimumSizeRectangle.Height);
                        }
                        rectangle.Width += splitContainer.SplitterWidth;
                    }
                    //}
                    //else {
                    //}
                }
            }
            return(rectangle);
        }
Esempio n. 7
0
 public bool IntersectsWith(_Rectangle rectangle)
 {
     return(Intersect(rectangle, this) != Empty);
 }
Esempio n. 8
0
 public bool Contains(_Rectangle rectangle)
 {
     return(this.Horizontal.Contains(rectangle.Horizontal) && this.Vertical.Contains(rectangle.Vertical));
 }
Esempio n. 9
0
 public static _Rectangle Union(_Rectangle rectangle1, _Rectangle rectangle2)
 {
     return(new _Rectangle(HorizontalLine.Union(rectangle1.Horizontal, rectangle2.Horizontal), VerticalLine.Union(rectangle1.Vertical, rectangle2.Vertical)));
 }