예제 #1
0
        //  Парсинг текстовых полей ввода координат
        public override void Parse(List <TextBox> list_tBox)
        {
            if (list_tBox != null)
            {
                if (list_tBox.Count == 2)
                {
                    if (GeometricParams.Count > 0)
                    {
                        GeometricParams.RemoveRange(0, GeometricParams.Count);
                    }

                    namedParameter param1 = new namedParameter();
                    param1.ParamName  = paramNames[0];
                    param1.ParamValue = pointParser(list_tBox[0].Text);
                    namedParameter param2 = new namedParameter();
                    param2.ParamName  = paramNames[1];
                    param2.ParamValue = pointParser(list_tBox[1].Text);

                    GeometricParams.Add(param1);
                    GeometricParams.Add(param2);
                }
                else
                {
                    throw new System.ApplicationException("There should be two text boxes for entering the coordinates of the Line !");
                }
            }
            else
            {
                throw new System.ApplicationException("There is no list of text fields for entering coordinates of the Line !");
            }
        }
예제 #2
0
        //  Обновление визуального отображения геометрической фигуры при изменении положения контрола
        public override void UpdateShapeGeometryByControl(string controlName, Point endLocation)
        {
            string[] str = controlName.Split('_');

            if (str[1].Substring(0, 5) != "Point")
            {
                MessageBox.Show("The name of the control is unknown in UpdateGeometryShapeByControl()!");
                return;
            }

            int controlPointNumber = int.Parse(str[1].Substring(5, str[1].Length - 5));

            if (controlPointNumber < 1 || controlPointNumber > GeometricParams.Count)
            {
                MessageBox.Show("Control has an incorrect index in UpdateGeometryShapeByControl()!");
                return;
            }

            controlPointNumber--;

            ((PolyLineSegment)((PathFigure)((PathGeometry)((Path)shapeBase).Data).Figures[0]).Segments[0]).Points[controlPointNumber] = endLocation;
            if (controlPointNumber == 0)
            {
                ((PathFigure)((PathGeometry)((Path)shapeBase).Data).Figures[0]).StartPoint = endLocation;
            }

            GeometricParams.RemoveAt(controlPointNumber);
            namedParameter param = new namedParameter();

            param.ParamName  = paramNames[controlPointNumber];
            param.ParamValue = endLocation;
            GeometricParams.Insert(controlPointNumber, param);

            _List_tBox[controlPointNumber].Text = endLocation.X.ToString() + " " + endLocation.Y.ToString();
        }
예제 #3
0
        // Обновление визуального отображения геометрической фигуры при изменении положения контрола
        public override void UpdateShapeGeometryByControl(string controlName, Point endLocation)
        {
            string[] str = controlName.Split('_');
            string   controlPointType = str[1];

            switch (controlPointType)
            {
            case "StartPoint":
                ((LineGeometry)((Path)shapeBase).Data).StartPoint = endLocation;

                GeometricParams.RemoveAt(0);
                namedParameter param1 = new namedParameter();
                param1.ParamName  = paramNames[0];
                param1.ParamValue = endLocation;
                GeometricParams.Insert(0, param1);

                _List_tBox[0].Text = endLocation.X.ToString() + " " + endLocation.Y.ToString();
                break;

            case "EndPoint":
                ((LineGeometry)((Path)shapeBase).Data).EndPoint = endLocation;

                GeometricParams.RemoveAt(1);
                namedParameter param2 = new namedParameter();
                param2.ParamName  = paramNames[1];
                param2.ParamValue = endLocation;
                GeometricParams.Insert(1, param2);

                _List_tBox[1].Text = endLocation.X.ToString() + " " + endLocation.Y.ToString();
                break;

            default:
                throw new System.ApplicationException("Error: Incorrect controlpoint type, '" + controlPointType + "' in UpdateGeometryShapeByControl()");
            }
        }
예제 #4
0
        //  Добавление новой вершины в фигуру
        public override void AddGeometryPoint(Point point)
        {
            paramNames.Add("Point" + (GeometricParams.Count + 1).ToString());                   //  Добавим название параметра в список с названиями параметров
            paramTypes.Add("Point");                                                            //  Добавим название типа параметра в список с названиями типов параметров

            namedParameter param = new namedParameter();

            param.ParamName  = paramNames[GeometricParams.Count];
            param.ParamValue = point;

            GeometricParams.Add(param);
        }
예제 #5
0
        public void SetGeometricCoords(Point pnt)               // Установка координат точки по структуре Point
        {
            if (GeometricParams.Count > 0)
            {
                GeometricParams.RemoveRange(0, GeometricParams.Count);
            }

            namedParameter param = new namedParameter();

            param.ParamName  = paramNames[0];
            param.ParamValue = pnt;
            GeometricParams.Add(param);
        }
예제 #6
0
        //--- Варианты установки координат точки

        public void SetGeometricCoords(string str)               // Установка координат точки по строке с координатами
        {
            if (GeometricParams.Count > 0)
            {
                GeometricParams.RemoveRange(0, GeometricParams.Count);
            }

            namedParameter param = new namedParameter();

            param.ParamName  = paramNames[0];
            param.ParamValue = pointParser(str);
            GeometricParams.Add(param);
        }
예제 #7
0
        //  Парсинг текстового поля ввода координат фигуры
        public override void Parse(List <TextBox> list_tBox)
        {
            if (list_tBox != null && list_tBox.Count > 0)
            {
                if (GeometricParams.Count > 0)
                {
                    GeometricParams.RemoveRange(0, GeometricParams.Count);
                }

                namedParameter param = new namedParameter();
                param.ParamName  = paramNames[0];
                param.ParamValue = pointParser(list_tBox[0].Text);

                GeometricParams.Add(param);
            }
        }
예제 #8
0
 // Обновление визуального отображения фигуры при изменении положения на заданный вектор
 public override void UpdateShapeGeometryByVector(Vector locationChange)
 {
     for (int i = 0; i < GeometricParams.Count; i++)
     {
         namedParameter param = new namedParameter();
         Point          p     = new Point();
         p.X = ((Point)GeometricParams[i].ParamValue).X + locationChange.X;
         p.Y = ((Point)GeometricParams[i].ParamValue).Y + locationChange.Y;
         param.ParamValue = p;
         param.ParamName  = GeometricParams[i].ParamName;
         GeometricParams.RemoveAt(i);
         GeometricParams.Insert(i, param);
     }
     ((Path)shapeBase).Data = CreateShapeGeometry();                                                     //  Создадим геометрию фигуры
     visualControler.UpdateAllControlsCoords();
     UpdateTextCoords();
 }
예제 #9
0
        //--- Создание новой фигуры по заданным параметрам
        public void CreateNewShapeByParams(string shapeType, string[,] param_array, int strokeWeight = 1, string shapeName = "Shape", string strokeColor = "#FF000000")
        {
            ShapeParams param = new ShapeParams();

            param.GeometricParams = new List <namedParameter>();
            for (int i = 0; i < param_array.GetLength(0); i++)
            {
                namedParameter p = new namedParameter();
                p.ParamName  = param_array[i, 0];
                p.ParamValue = param_array[i, 1];
                param.GeometricParams.Add(p);
            }
            param.ShapeType    = shapeType;
            param.ShapeName    = shapeName;
            param.StrokeColor  = strokeColor;
            param.StrokeWeight = strokeWeight;

            CreateNewShapeByLoadParams(param);          //          и создаем фигуру по параметрам элемента
        }
예제 #10
0
        internal static List <namedParameter> GetNamedParams(double[][][] polygon)
        {
            List <namedParameter> param_list = null;

            if (polygon != null)
            {
                int length = (polygon[0].Length > 3) ? polygon[0].Length - 1 : polygon[0].Length;
                if (length > 0)
                {
                    param_list = new List <namedParameter>();
                    for (int i = 0; i < length; i++)
                    {
                        namedParameter p = new namedParameter();
                        p.ParamName  = "Point" + (i + 1).ToString();
                        p.ParamValue = Math.Round(polygon[0][i][0]).ToString() + "," + Math.Round(polygon[0][i][1]).ToString();
                        param_list.Add(p);
                    }
                }
            }

            return(param_list);
        }
예제 #11
0
        internal List <namedParameter> GetNamedParams(GeoPolygon geo_poligon)
        {
            List <namedParameter> param_list = null;

            if (geo_poligon != null)
            {
                int length = (((Point[][])geo_poligon.coordinates)[0].Length > 3) ? ((Point[][])geo_poligon.coordinates)[0].Length - 1 : ((Point[][])geo_poligon.coordinates)[0].Length;
                if (length > 0)
                {
                    param_list = new List <namedParameter>();
                    for (int i = 0; i < length; i++)
                    {
                        namedParameter p = new namedParameter();
                        p.ParamName  = "Point" + (i + 1).ToString();
                        p.ParamValue = Math.Round(((Point[][])geo_poligon.coordinates)[0][i].X).ToString() + "," + Math.Round(((Point[][])geo_poligon.coordinates)[0][i].Y).ToString();
                        param_list.Add(p);
                    }
                }
            }

            return(param_list);
        }
예제 #12
0
        // Обновление визуального отображения геометрической фигуры при изменении положения контрола
        public override void UpdateShapeGeometryByControl(string controlName, Point endLocation)
        {
            string[] str = controlName.Split('_');
            string   controlPointType = str[1];

            switch (controlPointType)
            {
            case "Center":
                ((EllipseGeometry)((Path)shapeBase).Data).Center = endLocation;

                GeometricParams.RemoveAt(0);
                namedParameter param = new namedParameter();
                param.ParamName  = paramNames[0];
                param.ParamValue = endLocation;
                GeometricParams.Insert(0, param);

                //shapeBase.ToolTip = shapeBase.Name + " {" + endLocation.ToString() + "}";
                _List_tBox[0].Text = endLocation.X.ToString() + " " + endLocation.Y.ToString();
                break;

            default:
                throw new System.ApplicationException("Error: Incorrect controlpoint type, '" + controlPointType + "' in UpdateGeometryShapeByControl()");
            }
        }