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; }
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; }
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)); }
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(); }
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; } } }
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); }
public bool IntersectsWith(_Rectangle rectangle) { return(Intersect(rectangle, this) != Empty); }
public bool Contains(_Rectangle rectangle) { return(this.Horizontal.Contains(rectangle.Horizontal) && this.Vertical.Contains(rectangle.Vertical)); }
public static _Rectangle Union(_Rectangle rectangle1, _Rectangle rectangle2) { return(new _Rectangle(HorizontalLine.Union(rectangle1.Horizontal, rectangle2.Horizontal), VerticalLine.Union(rectangle1.Vertical, rectangle2.Vertical))); }