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