Beispiel #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;
                }
            }
        }
        /// <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);
            }
        }
Beispiel #4
0
        /// <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));
            }
        }
Beispiel #5
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++;
            }
        }
Beispiel #6
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 = "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);
        }