Пример #1
0
 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;
 }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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;
        }
Пример #5
0
 public void Add(Pie P)
 {
     _ItemsObj.Add(P); _PCount++;
 }
Пример #6
0
        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);
        }
Пример #7
0
        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();
        }
Пример #8
0
 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);
 }
Пример #9
0
 public void Add(Pie P)
 {
     _ItemsObj.Add(P); _PCount++;
 }