/// <summary> /// Метод, выполняющий сохранение фигур. /// </summary> /// <para name = "Currentfigure">Переменная, хранящая текущую выбранную фигуру</para> /// <para name = "Points">Переменная, хранящая координаты отрисовки фигуры</para> /// <para name = "FiguresBuild">Переменная, хранящая класс отрисовки</para> //public void MouseUp(List<PointF> points, MouseEventArgs e, Color linecolor, int thickness, DashStyle dashstyle, Color brushcolor) public void MouseUp(List <PointF> point) { Color linecolor = Color.Red; Color brushcolor = Color.Red; DashStyle dashStyle = DashStyle.Solid; int thickness = 5; var _drawObject = new ObjectFugure(linecolor, thickness, dashStyle, new GraphicsPath()) { FigureStart = point[0], FigureEnd = point[1], IdFigure = FiguresList.Count + 1 }; _drawObject.Path.AddRectangle(СonstructionFigure.ShowRectangleFloat(point[0], point[1])); _drawObject.DrawText(); if (FiguresList.Count < 9) { FiguresList.Add(_drawObject); } RefreshBitmap(); }
/// <summary> /// Метод сохранения объектов /// </summary> /// <param name="FiguresList"></param> public void Save(List <ObjectFugure> FiguresList) { ProjectSettingsMain.Zone_NewList.Clear(); foreach (var currentFiguresList in FiguresList) { if (currentFiguresList.Path.PointCount != 0) { RectangleF rectangleF = СonstructionFigure.ShowRectangleFloat(currentFiguresList.Path.PathPoints[0], currentFiguresList.Path.PathPoints[2]); if ((rectangleF.Width < 20) || (rectangleF.Height < 20)) { break; } RegionRectangle regionRectangle = new RegionRectangle { Rectangle = rectangleF, IdObject = currentFiguresList.IdFigure, Visible = true, StartX = currentFiguresList.Path.PathPoints[0].X, StartY = currentFiguresList.Path.PathPoints[0].Y, EndX = currentFiguresList.Path.PathPoints[2].X, EndY = currentFiguresList.Path.PathPoints[2].Y, Width = rectangleF.Width, Height = rectangleF.Height }; ProjectSettingsMain.Zone_NewList.Add(regionRectangle); regionRectangle = null; } } }
/// <summary> /// Метод, выполняющий отрисовку опорных точек. /// </summary> /// <para name = "SelectObject">Переменная хранащая объект для которого нужно построить опорные точки</para> public static void AddSupportPoint(ObjectFugure SelectObject, Color ColorLine) { for (int i = 0; i < 4; i++) { SupportObjectFugure supportObjectFugure = new SupportObjectFugure(new Pen(ColorLine, 2), new GraphicsPath()); supportObjectFugure.Path.AddEllipse(СonstructionFigure.SelectFigure(SelectObject.Path.PathPoints[i], SelectObject.Pen.Width)); supportObjectFugure.IdFigure = SelectObject.IdFigure; supportObjectFugure.ControlPointF = i; SelectObject.AddListFigure(supportObjectFugure); } }
/// <summary> /// Метод, выполняющий перемещение опорных точек. /// </summary> /// <para name = "CurrObj">Переменная, хранящая объект перемещения.</para> /// <para name = "DeltaX">Переменная, хранящая значение дельта X.</para> /// <para name = "DeltaY">Переменная, хранящая значение дельта Y.</para> public static void MoveObjectSupport(ObjectFugure CurrObj, int DeltaX, int DeltaY) { //if ((CurrObj.PointSelect[0].X - CurrObj.PointSelect[2].X != 0) && (CurrObj.PointSelect[0].Y - CurrObj.PointSelect[2].Y != 0)) //{ CurrObj.PointSelect = CurrObj.Path.PathPoints; //} for (int i = 0; i < 4; i++) { CurrObj.EditListFigure(i, СonstructionFigure.SelectFigure(CurrObj.PointSelect[i], CurrObj.Pen.Width)); } }
/// <summary> /// Пересчитывает ID фигур в списке /// </summary> private void IDRecalculation() { int index = 1; foreach (var currentFigures in FiguresList) { currentFigures.IdFigure = index; currentFigures.PointSelect = currentFigures.Path.PathPoints; currentFigures.Path.Reset(); currentFigures.Path.AddRectangle(СonstructionFigure.ShowRectangleFloat(currentFigures.PointSelect[0], currentFigures.PointSelect[2])); currentFigures.DrawText(); index++; } }
public void DrawText() { if (Path.PointCount != 0) { RectangleF rectangle = СonstructionFigure.ShowRectangleFloat(Path.PathPoints[0], Path.PathPoints[2]); int fontSize; if ((int)rectangle.Height / 2 < (int)rectangle.Width / 2) { fontSize = (int)rectangle.Height / 2; } else { fontSize = (int)rectangle.Width / 2; } int x = (int)(rectangle.Left + rectangle.Width / 2 - fontSize * 0.5); int y = (int)(rectangle.Top + rectangle.Height / 2 - fontSize * 0.5); string stringText = IdFigure.ToString(); FontFamily family = new FontFamily("Arial"); int fontStyle = (int)FontStyle.Regular; int emSize = fontSize; Point origin = new Point(x, y); StringFormat format = StringFormat.GenericDefault; if (emSize > 0) { Path.AddString(stringText, family, fontStyle, emSize, origin, format); } } }
/// <summary> /// Метод, выполняющий отрисовку прямоугольника при построении. /// </summary> /// <para name = "e">Объект хранящий данные для отображения эллипса</para> /// <para name = "Points">Точки для построения эллипса</para> /// <para name = "PenFigure">Кисть которая будет использоваться в построение эллипса</para> public static void PaintFigure(PaintEventArgs e, List <PointF> Points) { Pen pen = new Pen(Color.Red, 1); e.Graphics.DrawRectangle(pen, СonstructionFigure.ShowRectangleInt(Points[0], Points[1])); }
/// <summary> /// Метод, отвечающий за перемещение и масштабирование фигур. /// </summary> /// <para name = "SelectObject">Переменная хранащая объект для которого нужно выполнять действия</para> /// <para name = "SupportObj">Переменная хранащая опорные точки выбранного объекта</para> /// <para name = "DeltaX">Переменная хранащая разницу по координате X</para> /// <para name = "DeltaY">Переменная хранащая разницу по координате Y</para> /// /// <para name = "EdipParametr">Объекта класса необходимый для выполнения масштабирования</para> public static void ScaleSelectFigure(ObjectFugure SelectObject, SupportObjectFugure SupportObj, int DeltaX, int DeltaY) { if (SelectObject.IdFigure == SupportObj.IdFigure) { switch (SupportObj.ControlPointF) { case 0: if (SelectObject.PointSelect[0].X + DeltaX < SelectObject.PointSelect[1].X) { SelectObject.PointSelect[0].X += DeltaX; } if (SelectObject.PointSelect[0].Y + DeltaY < SelectObject.PointSelect[3].Y) { SelectObject.PointSelect[0].Y += DeltaY; } break; case 1: if (SelectObject.PointSelect[2].X + DeltaX > SelectObject.PointSelect[0].X) { SelectObject.PointSelect[2].X += DeltaX; } if (SelectObject.PointSelect[0].Y + DeltaY < SelectObject.PointSelect[2].Y) { SelectObject.PointSelect[0].Y += DeltaY; } break; case 2: if (SelectObject.PointSelect[2].X + DeltaX > SelectObject.PointSelect[3].X) { SelectObject.PointSelect[2].X += DeltaX; } if (SelectObject.PointSelect[2].Y + DeltaY > SelectObject.PointSelect[1].Y) { SelectObject.PointSelect[2].Y += DeltaY; } break; case 3: if (SelectObject.PointSelect[0].X + DeltaX < SelectObject.PointSelect[2].X) { SelectObject.PointSelect[0].X += DeltaX; } if (SelectObject.PointSelect[2].Y + DeltaY > SelectObject.PointSelect[0].Y) { SelectObject.PointSelect[2].Y += DeltaY; } break; } SelectObject.Path.Reset(); SelectObject.Path.AddRectangle(СonstructionFigure.ShowRectangleFloat(SelectObject.PointSelect[0], SelectObject.PointSelect[2])); SelectObject.DrawText(); } EditObject.MoveObjectSupport(SelectObject, DeltaX, DeltaY); }