Example #1
0
        /// <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;
                }
            }
        }
Example #3
0
        /// <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++;
            }
        }
Example #4
0
        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);
        }