/// <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> /// Пересчитывает 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 = "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); }