private static LineSymbol cloneLineSymbol(LineSymbol lineSymbol) { if (lineSymbol == null) return null; ESRI.ArcGIS.Mapping.Core.Symbols.SimpleLineSymbol mappingSimpleLineSymbol = lineSymbol as ESRI.ArcGIS.Mapping.Core.Symbols.SimpleLineSymbol; if (mappingSimpleLineSymbol != null) { ESRI.ArcGIS.Mapping.Core.Symbols.SimpleLineSymbol ls = new ESRI.ArcGIS.Mapping.Core.Symbols.SimpleLineSymbol() { Color = CloneBrush(mappingSimpleLineSymbol.Color), ControlTemplate = mappingSimpleLineSymbol.ControlTemplate, SelectionColor = CloneBrush(mappingSimpleLineSymbol.SelectionColor), Width = mappingSimpleLineSymbol.Width, }; return ls; } SimpleLineSymbol simpleLineSymbol = lineSymbol as SimpleLineSymbol; if (simpleLineSymbol != null) { SimpleLineSymbol ls = new SimpleLineSymbol() { Color = CloneBrush(simpleLineSymbol.Color), ControlTemplate = simpleLineSymbol.ControlTemplate, Style = simpleLineSymbol.Style, Width = simpleLineSymbol.Width, }; return ls; } CartographicLineSymbol cLineSymbol = lineSymbol as CartographicLineSymbol; if (cLineSymbol != null) { CartographicLineSymbol cs = new CartographicLineSymbol() { Color = CloneBrush(cLineSymbol.Color), ControlTemplate = cLineSymbol.ControlTemplate, DashArray = cLineSymbol.DashArray, DashCap = cLineSymbol.DashCap, DashOffset = cLineSymbol.DashOffset, EndLineCap = cLineSymbol.EndLineCap, LineJoin = cLineSymbol.LineJoin, MiterLimit = cLineSymbol.MiterLimit, StartLineCap = cLineSymbol.StartLineCap, Width = cLineSymbol.Width, }; return cs; } LineSymbol l = new LineSymbol() { Color = CloneBrush(lineSymbol.Color), ControlTemplate = lineSymbol.ControlTemplate, Width = lineSymbol.Width, }; return l; }
private static LineSymbol cloneLineSymbol(LineSymbol lineSymbol) { if (lineSymbol == null) { return(null); } ESRI.ArcGIS.Mapping.Core.Symbols.SimpleLineSymbol mappingSimpleLineSymbol = lineSymbol as ESRI.ArcGIS.Mapping.Core.Symbols.SimpleLineSymbol; if (mappingSimpleLineSymbol != null) { ESRI.ArcGIS.Mapping.Core.Symbols.SimpleLineSymbol ls = new ESRI.ArcGIS.Mapping.Core.Symbols.SimpleLineSymbol() { Color = CloneBrush(mappingSimpleLineSymbol.Color), ControlTemplate = mappingSimpleLineSymbol.ControlTemplate, SelectionColor = CloneBrush(mappingSimpleLineSymbol.SelectionColor), Width = mappingSimpleLineSymbol.Width, }; return(ls); } SimpleLineSymbol simpleLineSymbol = lineSymbol as SimpleLineSymbol; if (simpleLineSymbol != null) { SimpleLineSymbol ls = new SimpleLineSymbol() { Color = CloneBrush(simpleLineSymbol.Color), ControlTemplate = simpleLineSymbol.ControlTemplate, Style = simpleLineSymbol.Style, Width = simpleLineSymbol.Width, }; return(ls); } CartographicLineSymbol cLineSymbol = lineSymbol as CartographicLineSymbol; if (cLineSymbol != null) { CartographicLineSymbol cs = new CartographicLineSymbol() { Color = CloneBrush(cLineSymbol.Color), ControlTemplate = cLineSymbol.ControlTemplate, DashArray = cLineSymbol.DashArray, DashCap = cLineSymbol.DashCap, DashOffset = cLineSymbol.DashOffset, EndLineCap = cLineSymbol.EndLineCap, LineJoin = cLineSymbol.LineJoin, MiterLimit = cLineSymbol.MiterLimit, StartLineCap = cLineSymbol.StartLineCap, Width = cLineSymbol.Width, }; return(cs); } LineSymbol l = new LineSymbol() { Color = CloneBrush(lineSymbol.Color), ControlTemplate = lineSymbol.ControlTemplate, Width = lineSymbol.Width, }; return(l); }
/// <summary> /// Converts symbol to string containing JSON object defining a symbol /// </summary> /// <param name="symbol">Symbol</param> /// <returns>String</returns> public static String SymbolToJsonString(Symbol symbol) { if (symbol is IJsonSerializable) { return((symbol as IJsonSerializable).ToJson()); } string jstr = string.Empty; System.Text.StringBuilder sb = new System.Text.StringBuilder(); #region Mapping.Core Symbols // ImageFillSymbol to esriPMS type #region ESRI.ArcGIS.Mapping.Core.Symbols.ImageFillSymbol imgsymb = symbol as ESRI.ArcGIS.Mapping.Core.Symbols.ImageFillSymbol; if (imgsymb != null) { double size = imgsymb.Size; double xoffset = (size * imgsymb.OriginX) - size / 2; double yoffset = (size * imgsymb.OriginY) - size / 2; sb.AppendFormat("{0} \"type\" : \"esriPMS\", \"url\" : \"{2}\", ", "{", "}", imgsymb.Source); sb.AppendFormat("\"width\" : {0}, \"height\" : {0}, \"xoffset\" : {1}, \"yoffset\" : {2}", size, xoffset, yoffset); //sb.Append(", \"contentType\" : \"image/png\", \"angle\" : 0, \"color\" : null"); sb.Append(" }"); return(sb.ToString()); } #endregion // SimpleLineSymbol to esriSLS type #region ESRI.ArcGIS.Mapping.Core.Symbols.SimpleLineSymbol lsymb = symbol as ESRI.ArcGIS.Mapping.Core.Symbols.SimpleLineSymbol; if (lsymb != null) { SolidColorBrush lbrush = lsymb.Color as SolidColorBrush; if (lbrush != null) { Color lcolor = lbrush.Color; string lcolorstr = string.Format("[{0},{1},{2},{3}]", lcolor.R, lcolor.G, lcolor.B, lcolor.A); sb.AppendFormat("{0} \"type\" : \"esriSLS\", \"style\" : \"esriSLSSolid\",", "{", "}"); sb.AppendFormat(" \"color\" : {0}, \"width\": {1}", lcolorstr, lsymb.Width); sb.Append(" }"); return(sb.ToString()); } } #endregion // CartographicLineSymbol to esriSLS type #region ESRI.ArcGIS.Mapping.Core.Symbols.CartographicLineSymbol clsymb = symbol as ESRI.ArcGIS.Mapping.Core.Symbols.CartographicLineSymbol; if (clsymb != null) { SolidColorBrush clbrush = clsymb.Color as SolidColorBrush; if (clbrush != null) { Color clcolor = clbrush.Color; string clcolorstr = string.Format("[{0},{1},{2},{3}]", clcolor.R, clcolor.G, clcolor.B, clcolor.A); if (clsymb.DashArray.Count > 0) { System.Text.StringBuilder sb2 = new System.Text.StringBuilder(); string cltype = "esriSLSDot"; foreach (double dashdouble in clsymb.DashArray) { if (sb2.Length > 0) { sb2.Append(" "); } sb2.AppendFormat("{0}", dashdouble); } switch (sb2.ToString()) { case "1 1": // Dot break; case "2 1": // Dash cltype = "esriSLSDash"; break; case "2 1 1 1": // DashDot cltype = "esriSLSDashDot"; break; case "2 1 1 1 1 1": // DashDotDot cltype = "esriSLSDashDotDot"; break; } sb.AppendFormat("{0} \"type\" : \"esriSLS\", \"style\" : \"{2}\",", "{", "}", cltype); sb.AppendFormat(" \"color\" : {0}, \"width\": {1}", clcolorstr, clsymb.Width); sb.Append(" }"); } } return(sb.ToString()); } #endregion // SimpleFillSymbol to esriSFS type #region ESRI.ArcGIS.Mapping.Core.Symbols.SimpleFillSymbol fsymb = symbol as ESRI.ArcGIS.Mapping.Core.Symbols.SimpleFillSymbol; if (fsymb != null) { SolidColorBrush brush = fsymb.Fill as SolidColorBrush; if (brush != null) { Color color = brush.Color; string colorstr = string.Format("[{0},{1},{2},{3}]", color.R, color.G, color.B, color.A); sb.AppendFormat("{0} \"type\" : \"esriSFS\", \"style\" : \"esriSFSSolid\",", "{"); sb.AppendFormat(" \"color\" : {0}", colorstr); if (fsymb.BorderBrush != null) { SolidColorBrush olbrush = fsymb.BorderBrush as SolidColorBrush; Color olcolor = olbrush.Color; string olcolorstr = string.Format("[{0},{1},{2},{3}]", olcolor.R, olcolor.G, olcolor.B, olcolor.A); sb.AppendFormat(", \"outline\" : {0} \"type\" : \"esriSLS\", \"style\" : \"esriSLSSolid\", \"color\" : {2}, \"width\" : {3} {1}", "{", "}", olcolorstr, FromPixelsToPoints(fsymb.BorderThickness)); } sb.Append(" }"); } return(sb.ToString()); } #endregion #endregion return(jstr); }