public object LoadShapesFromFile(string filename) { string json_str; try { json_str = File.ReadAllText(filename); char[] first_char = json_str.ToCharArray(0, 1); if (first_char[0] == '[') { List <ShapeParams> paramsList = JsonConvert.DeserializeObject <List <ShapeParams> >(json_str); return(paramsList); } else if (first_char[0] == '{') { ShapeParams param = JsonConvert.DeserializeObject <ShapeParams>(json_str); return(param); } else { throw new System.ApplicationException("JsonFileService.LoadFromFile(): An unknown instance has been uploaded!"); } } catch (Exception ex) { throw new System.ApplicationException(ex.Message); } }
public static List <ShapeParams> GetShapeParams(double[][][][] geo_multiPoligon, OperationShapeProperty property) { List <ShapeParams> param_list = null; if (geo_multiPoligon != null) { int polygon_count = geo_multiPoligon.GetLength(0); if (polygon_count > 0) { param_list = new List <ShapeParams>(); for (int i = 0; i < polygon_count; i++) { ShapeParams p = new ShapeParams(); p.ShapeName = "OperationPolygon" + (i + 1).ToString(); p.ShapeType = "Polygon"; p.StrokeWeight = property.StrokeWeight; p.StrokeColor = property.StrokeColor; p.FillColor = property.FillColor; p.GeometricParams = GetNamedParams(geo_multiPoligon[i]); param_list.Add(p); } } } return(param_list); }
// Обновление текстовых кординат по фактическому расположению фигуры на панели рисования public override void SetTextCoords(ShapeParams param) { if (_List_tBox == null) // Если списка текстовых полей для ввода параметров нет { _List_tBox = new List <TextBox>(); // Создаем его for (int i = 0; i < _Editor.ParamPanels.Children.Count; i++) // Перебираем весь список панелей с текстовыми полями для задания параметров фигур { if (((Panel)_Editor.ParamPanels.Children[i]).Name == "LinePanel") // Если эта пенель для линии, то { foreach (var elem in ((Panel)_Editor.ParamPanels.Children[i]).Children) // перебираем все элементы панели { if (elem is TextBox) // если этот элемент текс-бокс, { _List_tBox.Add((TextBox)elem); // добавляем его в список полей текст-боксов } } break; // выходим из цикла } } } if (param.GeometricParams[0].ParamValue is string) { _List_tBox[0].Text = (string)param.GeometricParams[0].ParamValue; } else if (param.GeometricParams[0].ParamValue is Point) { _List_tBox[0].Text = ((Point)param.GeometricParams[0].ParamValue).X.ToString() + "," + ((Point)param.GeometricParams[0].ParamValue).Y.ToString(); } else { throw new System.ApplicationException("ShapeLine.SetTextCoords(): Unknown Type of ParamValue - the reason must be clarified by programmer!"); } if (param.GeometricParams[1].ParamValue is string) { _List_tBox[1].Text = (string)param.GeometricParams[1].ParamValue; } else if (param.GeometricParams[1].ParamValue is Point) { _List_tBox[1].Text = ((Point)param.GeometricParams[1].ParamValue).X.ToString() + "," + ((Point)param.GeometricParams[1].ParamValue).Y.ToString(); } else { throw new System.ApplicationException("ShapeLine.SetTextCoords(): Unknown Type of ParamValue - the reason must be clarified by programmer!"); } }
//--- Создание новой фигуры по заданным параметрам 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); // и создаем фигуру по параметрам элемента }
// Получение параметров интерфейса фигуры public ShapeParams GetShapeParams() { ShapeParams param = new ShapeParams(); param.ShapeName = ShapeName; param.ShapeType = ShapeType; param.StrokeWeight = StrokeWeight; param.StrokeColor = StrokeColor; param.FillColor = FillColor; param.GeometricParams = new List <namedParameter>(); for (int j = 0; j < GeometricParams.Count; j++) { param.GeometricParams.Add(new namedParameter() { ParamName = GeometricParams[j].ParamName, ParamValue = GeometricParams[j].ParamValue }); } return(param); }
//--- Создание новой фигуры по параметрам загруженным из файла или БД public ShapeBase CreateNewShapeByLoadParams(ShapeParams param) { ShapeBase shape = null; // Фигура, которую будем пытаться создать switch (param.ShapeType) // Узнаем фигуру какого типа строим в Редакторе { case "Point": _Editor.ShapeType = SHAPE_TYPE.Point; break; case "Line": _Editor.ShapeType = SHAPE_TYPE.Line; break; case "PolyLine": _Editor.ShapeType = SHAPE_TYPE.PolyLine; break; case "Polygon": _Editor.ShapeType = SHAPE_TYPE.Polygon; break; default: // Если тип фигуры для построения МенеджерФигур "не знает", то throw new System.ApplicationException("ShapesManager.CreateNewShapeByLoadParams(): Unknown Geometry Type!"); } try // пытаемся { shape = CreateNewShape(param); // построить фигуру по начальным кординатам мыши с дальнейшим продолжением } catch (ApplicationException ex) { MessageBox.Show(ex.Message, "Error!"); } catch (Exception ex) { throw new System.ApplicationException("ShapesManager.CreateNewShapeByLoadParams(): Could not draw the shape by loaded Parameters!\n\n" + ex.Message); } return(shape); }
// Установка параметров фигуры по информации интерфейса public abstract void SetTextCoords(ShapeParams param);