public Pie(Pie P) : base(P.Xn, P.Yn, P.Width, P.Height, P.BorderCol, P.Col, P.ZOrder, P.BorderWidth, P.Name) { startAngle = P.startAngle; sweepAngle = P.sweepAngle; TypeShape = P.TypeShape; }
public bool ContainsPoint(float X, float Y) { for (int i = _GroupItem.Count - 1; i >= 0; i--) { Item It = (Item)_GroupItem[i]; switch (It.TypeShape) { case Nows.Line: Line L = (Line)_GroupItem[i]; if (L.ContainsPoint(X, Y)) { return(true); } break; case Nows.Rec: Rec R = (Rec)_GroupItem[i]; if (R.ContainsPoint(X, Y)) { return(true); } break; case Nows.Ellip: case Nows.Pie: Pie P = (Pie)_GroupItem[i]; if (P.ContainsPoint(X, Y)) { return(true); } break; case Nows.Group: GroupItem GI = (GroupItem)_GroupItem[i]; if (GI.ContainsPoint(X, Y)) { return(true); } break; default: break; } } return(false); }
public Object FindShape(float X, float Y) { for (int i = _Items.Count - 1; i >= 0; i--) { switch (_Items.GetTypeOfObj(i)) { case Nows.Line: Line L = (Line)_Items[i]; if (L.ContainsPoint(X, Y)) { return(_Items[i]); } break; case Nows.Rec: Rec R = (Rec)_Items[i]; if (R.ContainsPoint(X, Y)) { return(_Items[i]); } break; case Nows.Ellip: case Nows.Pie: Pie P = (Pie)_Items[i]; if (P.ContainsPoint(X, Y)) { return(_Items[i]); } break; case Nows.Group: GroupItem GI = (GroupItem)_Items[i]; if (GI.ContainsPoint(X, Y)) { return(_Items[i]); } break; } } return(null); }
public GroupItem(GroupItem GI) { _GroupItem = new ArrayList(); TypeShape = Nows.Group; Item It; for (int i = 0; i < GI.Count; i++) { It = (Item)GI[i]; switch (It.TypeShape) { case Nows.Line: Line L = (Line)GI[i]; _GroupItem.Add(new Line(L)); break; case Nows.Rec: Rec R = (Rec)GI[i]; _GroupItem.Add(new Rec(R)); break; case Nows.Ellip: case Nows.Pie: Pie P = (Pie)GI[i]; _GroupItem.Add(new Pie(P)); break; case Nows.Group: GroupItem Gr = (GroupItem)GI[i]; _GroupItem.Add(new GroupItem(Gr)); break; } } X1 = GI.X1; X2 = GI.X2; Y1 = GI.Y1; Y2 = GI.Y2; Name = GI.Name; ZOrder = GI.ZOrder; }
public void Add(Pie P) { _ItemsObj.Add(P); _PCount++; }
public bool ContainsPoint(float X, float Y, bool CtrlPressed) { //bool result = false; for (int i = _Item.Count - 1; i >= 0; i--) { // if (result) return result; Item It = (Item)_Item[i]; switch (It.TypeShape) { case Nows.Line: Line L = (Line)_Item[i]; if (L.ContainsPoint(X, Y)) { if (CtrlPressed) { _Item.RemoveAt(i); } return(true); } break; case Nows.Rec: Rec R = (Rec)_Item[i]; if (R.ContainsPoint(X, Y)) { if (CtrlPressed) { _Item.RemoveAt(i); } return(true); } break; case Nows.Ellip: case Nows.Pie: Pie P = (Pie)_Item[i]; if (P.ContainsPoint(X, Y)) { if (CtrlPressed) { _Item.RemoveAt(i); } return(true); } break; case Nows.Group: GroupItem GI = (GroupItem)_Item[i]; if (GI.ContainsPoint(X, Y)) { if (CtrlPressed) { _Item.RemoveAt(i); } return(true); } break; default: break; } } return(false); }
private void pOut_MouseUp(object sender, MouseEventArgs e) { if (down) { down = false; Graphics g = Graphics.FromHwnd(tcTabs.TabPages[tcTabs.SelectedIndex].Handle); switch (Now) { case Nows.None: if (CurrentPage.Selected.Count != 0) CurrentPage.Selected.ReSelect(); else { g.DrawRectangle(new Pen(tcTabs.TabPages[tcTabs.SelectedIndex].BackColor), PnOut.X, PnOut.Y, Math.Abs(e.X - Pn.X), Math.Abs(e.Y - Pn.Y)); CurrentPage.Selected.Clear(); for (int i = 0; i < CurrentPage.Items.Count; i++) { Item It = (Item)CurrentPage.Items[i]; if (It.X1 >= PnOut.X + Dlg && It.X2 <= Math.Max(e.X, Pn.X) && It.Y1 >= PnOut.Y + Dlv && It.Y2 <= Math.Max(e.Y, Pn.Y)) CurrentPage.Selected.Add(CurrentPage.Items[i]); } if (CurrentPage.Selected.Count == 1) tscbAlls.SelectedIndex = CurrentPage.Selected.ZOrder; else tscbAlls.SelectedIndex = -1; if (CurrentPage.Selected.Count == 1) { Item It = (Item)CurrentPage.Selected[0]; if (It.TypeShape == Nows.Pie) { PieButtons(true); Pie P = (Pie)CurrentPage.Selected[0]; tstbAlfa.Text = P.startAngle.ToString(); tstbBeta.Text = P.sweepAngle.ToString(); } } } break; case Nows.Line: { if (Pn.X != e.X && Pn.Y != e.Y) { Line L = new Line(Pn.X + Dlg, Pn.Y + Dlv, e.X + Dlg, e.Y + Dlv, BorderCol, ItCol, CurrentPage.ZOrdCurrent++, LinesWidth, string.Format("Линия {0}", CurrentPage.LC++)); CurrentPage.Items.Add(L); CurrentPage.Selected.Clear(); CurrentPage.Selected.Add(L); // CurrentPage.Selected.ZOrder = L.ZOrder; L.RePain(Dlg, Dlv, 1, g); tscbAlls.Items.Add(L.Name); tscbAlls.SelectedIndex = tscbAlls.Items.Count - 1; } break; } case Nows.Rec: { if (Pn.X != e.X && Pn.Y != e.Y) { Rec R = new Rec(PnOut.X + Dlg, PnOut.Y + Dlv, Math.Abs(e.X - Pn.X), Math.Abs(e.Y - Pn.Y), BorderCol, ItCol, CurrentPage.ZOrdCurrent++, LinesWidth, string.Format("Прямоугольник {0}", CurrentPage.RC++)); CurrentPage.Items.Add(R); CurrentPage.Selected.Clear(); CurrentPage.Selected.Add(R); // CurrentPage.Selected.ZOrder = R.ZOrder; R.RePain(Dlg, Dlv, true, 1, g); tscbAlls.Items.Add(R.Name); tscbAlls.SelectedIndex = tscbAlls.Items.Count - 1; } break; } case Nows.Ellip: { if (Pn.X != e.X && Pn.Y != e.Y) { Pie E = new Pie(PnOut.X + Dlg, PnOut.Y + Dlv, Math.Abs(e.X - Pn.X), Math.Abs(e.Y - Pn.Y), BorderCol, ItCol, CurrentPage.ZOrdCurrent++, LinesWidth, Nows.Ellip, 0.0f, 360.0f, string.Format("Другая фигура {0}", CurrentPage.PC++)); CurrentPage.Items.Add(E); CurrentPage.Selected.Clear(); CurrentPage.Selected.Add(E); // CurrentPage.Selected.ZOrder = E.ZOrder; E.RePain(Dlg, Dlv, true, 1, g); tscbAlls.Items.Add(E.Name); tscbAlls.SelectedIndex = tscbAlls.Items.Count - 1; } break; } case Nows.Pie: { if (Pn.X != e.X && Pn.Y != e.Y) { Pie E = new Pie(PnOut.X + Dlg, PnOut.Y + Dlv, Math.Abs(e.X - Pn.X), Math.Abs(e.Y - Pn.Y), BorderCol, ItCol, CurrentPage.ZOrdCurrent++, LinesWidth, Nows.Pie, startAng, sweepAng, string.Format("Другая фигура {0}", CurrentPage.PC++)); CurrentPage.Items.Add(E); CurrentPage.Selected.Clear(); CurrentPage.Selected.Add(E); E.RePain(Dlg, Dlv, true, 1, g); tscbAlls.Items.Add(E.Name); tscbAlls.SelectedIndex = tscbAlls.Items.Count - 1; } break; } } RePainAllItems(true); WriteCounts(); } CheckEnables(); }
private void WritePToFile(BinaryWriter dataOut, Pie P) { dataOut.Write((int)P.TypeShape); dataOut.Write(P.BorderCol.ToArgb()); dataOut.Write(P.Col.ToArgb()); dataOut.Write(P.ZOrder); dataOut.Write(P.BorderWidth); dataOut.Write(P.Xn); dataOut.Write(P.Yn); dataOut.Write(P.Width); dataOut.Write(P.Height); dataOut.Write(P.startAngle); dataOut.Write(P.sweepAngle); }
public void Add(Pie P) { _ItemsObj.Add(P); _PCount++; }