private static FillSymbol cloneFillSymbol(FillSymbol fillSymbol) { if (fillSymbol == null) { return(null); } ESRI.ArcGIS.Mapping.Core.Symbols.SimpleFillSymbol mappingFillSymbol = fillSymbol as ESRI.ArcGIS.Mapping.Core.Symbols.SimpleFillSymbol; if (mappingFillSymbol != null) { ESRI.ArcGIS.Mapping.Core.Symbols.SimpleFillSymbol sfs = new ESRI.ArcGIS.Mapping.Core.Symbols.SimpleFillSymbol() { BorderBrush = CloneBrush(mappingFillSymbol.BorderBrush), BorderThickness = mappingFillSymbol.BorderThickness, ControlTemplate = mappingFillSymbol.ControlTemplate, Fill = CloneBrush(mappingFillSymbol.Fill), SelectionColor = CloneBrush(mappingFillSymbol.SelectionColor), }; return(sfs); } SimpleFillSymbol simpleFillSymbol = fillSymbol as SimpleFillSymbol; if (simpleFillSymbol != null) { SimpleFillSymbol sfs = new SimpleFillSymbol() { BorderBrush = CloneBrush(simpleFillSymbol.BorderBrush), BorderThickness = simpleFillSymbol.BorderThickness, ControlTemplate = simpleFillSymbol.ControlTemplate, Fill = CloneBrush(simpleFillSymbol.Fill), }; return(sfs); } PictureFillSymbol pictureFillSymbol = fillSymbol as PictureFillSymbol; if (pictureFillSymbol != null) { PictureFillSymbol pfs = new PictureFillSymbol() { BorderBrush = CloneBrush(pictureFillSymbol.BorderBrush), BorderThickness = pictureFillSymbol.BorderThickness, ControlTemplate = pictureFillSymbol.ControlTemplate, Fill = CloneBrush(pictureFillSymbol.Fill), Source = pictureFillSymbol.Source, }; return(pfs); } FillSymbol fs = new FillSymbol() { BorderBrush = CloneBrush(fillSymbol.BorderBrush), BorderThickness = fillSymbol.BorderThickness, ControlTemplate = fillSymbol.ControlTemplate, Fill = CloneBrush(fillSymbol.Fill), }; return(fs); }
/// <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); }
private static FillSymbol cloneFillSymbol(FillSymbol fillSymbol) { if (fillSymbol == null) return null; ESRI.ArcGIS.Mapping.Core.Symbols.SimpleFillSymbol mappingFillSymbol = fillSymbol as ESRI.ArcGIS.Mapping.Core.Symbols.SimpleFillSymbol; if (mappingFillSymbol != null) { ESRI.ArcGIS.Mapping.Core.Symbols.SimpleFillSymbol sfs = new ESRI.ArcGIS.Mapping.Core.Symbols.SimpleFillSymbol() { BorderBrush = CloneBrush(mappingFillSymbol.BorderBrush), BorderThickness = mappingFillSymbol.BorderThickness, ControlTemplate = mappingFillSymbol.ControlTemplate, Fill = CloneBrush(mappingFillSymbol.Fill), SelectionColor = CloneBrush(mappingFillSymbol.SelectionColor), }; return sfs; } SimpleFillSymbol simpleFillSymbol = fillSymbol as SimpleFillSymbol; if (simpleFillSymbol != null) { SimpleFillSymbol sfs = new SimpleFillSymbol() { BorderBrush = CloneBrush(simpleFillSymbol.BorderBrush), BorderThickness = simpleFillSymbol.BorderThickness, ControlTemplate = simpleFillSymbol.ControlTemplate, Fill = CloneBrush(simpleFillSymbol.Fill), }; return sfs; } PictureFillSymbol pictureFillSymbol = fillSymbol as PictureFillSymbol; if (pictureFillSymbol != null) { PictureFillSymbol pfs = new PictureFillSymbol() { BorderBrush = CloneBrush(pictureFillSymbol.BorderBrush), BorderThickness = pictureFillSymbol.BorderThickness, ControlTemplate = pictureFillSymbol.ControlTemplate, Fill = CloneBrush(pictureFillSymbol.Fill), Source = pictureFillSymbol.Source, }; return pfs; } FillSymbol fs = new FillSymbol() { BorderBrush = CloneBrush(fillSymbol.BorderBrush), BorderThickness = fillSymbol.BorderThickness, ControlTemplate = fillSymbol.ControlTemplate, Fill = CloneBrush(fillSymbol.Fill), }; return fs; }