// Парсинг текстовых полей ввода координат 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 !"); } }
// Обновление визуального отображения геометрической фигуры при изменении положения контрола 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(); }
// Обновление визуального отображения геометрической фигуры при изменении положения контрола 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()"); } }
// Добавление новой вершины в фигуру 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); }
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); }
//--- Варианты установки координат точки 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); }
// Парсинг текстового поля ввода координат фигуры 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); } }
// Обновление визуального отображения фигуры при изменении положения на заданный вектор 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(); }
//--- Создание новой фигуры по заданным параметрам 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); // и создаем фигуру по параметрам элемента }
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); }
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); }
// Обновление визуального отображения геометрической фигуры при изменении положения контрола 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()"); } }