示例#1
0
 public void SaveFileAs(string FileName)
 {
     CurrFileName = FileName;
     this.Text    = CurrFileName;
     using (FileStream fs = new FileStream(FileName, FileMode.Create))
     {
         BinaryFormatter formatter = new BinaryFormatter();
         //SoapFormatter formatter = new SoapFormatter();
         AllDraws alldrw = new AllDraws();
         try
         {
             foreach (Draws drw in DrawsList)
             {
                 alldrw.Add(drw);
             }
             formatter.Serialize(fs, alldrw);
             FileChanged = false;
         }
         catch (SerializationException e)
         {
             Console.WriteLine("Failed to serialize. Reason: " + e.Message);
             throw;
         }
     }
 }
示例#2
0
 public void RedoChanges()
 {
     if (IsCanRedoChanges())
     {
         PrepareToUndo(true);
         SelList.Clear();
         DrawsList.Clear();
         GC.Collect();
         using (MemoryStream stream = new MemoryStream())
         {
             RedoStack.Pop(stream);
             List <Draws> list = LoadFromStream(stream);
             foreach (Draws drw in list)
             {
                 DrawsList.Add(drw);
             }
         }
         this.Refresh();
     }
 }
示例#3
0
 private void drawBox_MouseDown(object sender, MouseEventArgs e)
 {
     FstPnt = new PointF(e.X, e.Y);
     LstPnt = FstPnt;
     if (!tsbSelObj.Checked)
     {
         SelList.Clear();
     }
     if (tsbSelObj.Checked || (e.Button == MouseButtons.Right))
     {
         Draws drw = DrawsList.PointInFigure(FstPnt);
         if (drw != null)
         { // элемент был выбран мышкой
             markerIndex = drw.MarkerIndex;
             if (markerIndex >= 0)
             {
                 foreach (Draws d in SelList)
                 {
                     d.MarkerIndex = markerIndex;                          // раздача всем остальным
                 }
             }
             if (controlPressed)
             {
                 if (SelList.IndexOf(drw) >= 0)
                 {                          // удаление из списка уже выделенного элемента
                     if (SelList.Count > 1) // последний элемент при Ctrl не убирается
                     {
                         drw.Selected = false; SelList.Remove(drw);
                     }
                 }
                 else
                 {
                     SelList.Add(drw);  // добавление к списку
                 }
             }
             else
             {
                 if (!SelList.FigureInList(drw))
                 {
                     SelList.Clear();  // очистка списков
                     SelList.Add(drw); // выделение одного элемента
                 }
             }
             this.Refresh();
         }
         else
         {
             SelList.Clear();        // очистка списков
             drawBox.Capture = true; // захват мышки
         }
     }
     // вызов контекстного меню
     if ((e.Button == MouseButtons.Right))
     {
         if (SelList.Count > 0)
         {
             Draws drw = DrawsList.PointInFigure(FstPnt);
             bool  ModifyFiguresNode = (drw != null) && drw.NodeChanging;
             if (drw != null)
             {
                 markerIndex = drw.MarkerIndex; SelMrkPnt = e.Location;
             }
             else
             {
                 markerIndex = 0;
             }
             miAddFigureNode.Visible = ModifyFiguresNode && (drw.MarkerIndex == 0);
             if (drw is Polygones)
             {
                 miDeleteFigureNode.Visible = ModifyFiguresNode && (drw.MarkerIndex < 0) &&
                                              (((Polygones)drw).Points.Count > 2);
             }
             else
             {
                 miDeleteFigureNode.Visible = false;
             }
             miBeginChangeNodes.Visible = (SelList.Count == 1) && (drw is Polygones) &&
                                          drw.CanNodeChanging() && !drw.NodeChanging;
             miEndChangeNodes.Visible = (SelList.Count == 1) && (drw is Polygones) && drw.NodeChanging;
             miGroupFigures.Enabled   = (SelList.Count > 1);
             miUngroupFigures.Enabled = drw is Groups;
             cmsFigPopup.Tag          = drw;
             cmsFigPopup.Show(drawBox, e.Location);
         }
         else
         {
             cmsBkgPopup.Show(drawBox, e.Location);
         }
     }
 }