/// <summary> /// Creates a symbol compatible with Application Framework from JSON object /// </summary> /// <param name="jsonObject">JSON object defining a symbol</param> /// <returns>Symbol</returns> public static Symbol SymbolFromJson(JsonObject jsonObject) { Symbol symb = null; if (jsonObject != null) { string symbType = jsonObject["type"]; if (!string.IsNullOrEmpty(symbType)) { switch (symbType) { case "esriPMS": // REST defined PictureMarkerSymbol --> output: ImageFillSymbol #region ESRI.ArcGIS.Mapping.Core.Symbols.ImageFillSymbol imgsymb = new ESRI.ArcGIS.Mapping.Core.Symbols.ImageFillSymbol(); double size = 64; // standard size of images used for Viewer symbols if (jsonObject.ContainsKey("width") || jsonObject.ContainsKey("height")) { // Get the greater of the width or height, converting from points to pixels in the process var pointsToPixelsFactor = 4d / 3d; var width = jsonObject.ContainsKey("width") ? jsonObject["width"] * pointsToPixelsFactor : 0; var height = jsonObject.ContainsKey("height") ? jsonObject["height"] * pointsToPixelsFactor : 0; size = width > height ? width : height; } imgsymb.Size = size; if (jsonObject.ContainsKey("xoffset")) { imgsymb.OriginX = (size / 2 + jsonObject["xoffset"]) / size; } if (jsonObject.ContainsKey("yoffset")) { imgsymb.OriginY = (size / 2 + jsonObject["yoffset"]) / size; } if (jsonObject.ContainsKey("imageData")) { imgsymb.ImageData = jsonObject["imageData"]; } else if (jsonObject.ContainsKey("url")) { imgsymb.Source = jsonObject["url"]; } var fill = imgsymb.Fill as ImageBrush; if (fill != null) { fill.Stretch = Stretch.Uniform; } symb = imgsymb; break; #endregion default: // all other REST defined cases symb = Symbol.FromJson(jsonObject.ToString()); break; } } } return(symb); }
} // public string getAGSMapServiceUrl() /// <summary> /// Create and add to map a simple graphics layer, or return existed GL /// </summary> /// <returns>redline layer</returns> public static GraphicsLayer makeRLLayer(Map map, string layerID, string layerName) { if (map != null) { var graphicsLayer = map.Layers[layerID] as GraphicsLayer; if (graphicsLayer != null) { string.Format("VLayer.makeRLLayer, layer already exists, id '{0}'", layerID).clog(); return(graphicsLayer); } } string.Format("VLayer.makeRLLayer, create new GraphicsLayer, id '{0}'", layerID).clog(); // don't react on hover var symbPMS = new PictureMarkerSymbol() { Height = 28, Width = 28, OffsetX = 14, OffsetY = 28, Source = new System.Windows.Media.Imaging.BitmapImage( new Uri("/Images/MarkerSymbols/Basic/RedTag.png", UriKind.RelativeOrAbsolute)) }; // react on hover var symbIFS = new ESRI.ArcGIS.Mapping.Core.Symbols.ImageFillSymbol() { Source = "/Images/MarkerSymbols/Basic/RedTag.png", //OffsetX = 14, OffsetY = 28, Size = 28, OriginX = 0.5, OriginY = 1 }; var gl = new GraphicsLayer() { ID = layerID, Renderer = new SimpleRenderer() { Symbol = symbIFS // new SimpleMarkerSymbol() }, RendererTakesPrecedence = false }; //ESRI.ArcGIS.Client.Extensibility.LayerProperties.SetIsPopupEnabled(gl, false); // Set layer name in Map Contents //gl.SetValue(MapApplication.LayerNameProperty, lyrName); //* Remove the line that says "wmsLayer.SetValue(MapApplication.LayerNameProperty, layerName);" and replace it with "MapApplication.SetLayerName(wmsLayer, layerName);" //* http://forums.arcgis.com/threads/51206-Adding-WMS-Service?p=178500&viewfull=1#post178500 //MapApplication.SetLayerName(gl, lyrName); if (map != null) { gl.Initialize(); map.Layers.Add(gl); MapApplication.SetLayerName(gl, layerName); } return(gl); } // public static GraphicsLayer makeRLLayer(Map map, string layerID, string layerName)
/// <summary> /// Creates a symbol compatible with Application Framework from JSON object /// </summary> /// <param name="jsonObject">JSON object defining a symbol</param> /// <returns>Symbol</returns> public static Symbol SymbolFromJson(JsonObject jsonObject) { Symbol symb = null; if (jsonObject != null) { string symbType = jsonObject["type"]; if (!string.IsNullOrEmpty(symbType)) { switch (symbType) { case "esriPMS":// REST defined PictureMarkerSymbol --> output: ImageFillSymbol #region ESRI.ArcGIS.Mapping.Core.Symbols.ImageFillSymbol imgsymb = new ESRI.ArcGIS.Mapping.Core.Symbols.ImageFillSymbol(); double size = 64; // standard size of images used for Viewer symbols if (jsonObject.ContainsKey("width") || jsonObject.ContainsKey("height")) { // Get the greater of the width or height, converting from points to pixels in the process var pointsToPixelsFactor = 4d / 3d; var width = jsonObject.ContainsKey("width") ? jsonObject["width"] * pointsToPixelsFactor : 0; var height = jsonObject.ContainsKey("height") ? jsonObject["height"] * pointsToPixelsFactor : 0; size = width > height ? width : height; } imgsymb.Size = size; if (jsonObject.ContainsKey("xoffset")) imgsymb.OriginX = (size /2 + jsonObject["xoffset"]) / size; if (jsonObject.ContainsKey("yoffset")) imgsymb.OriginY = (size / 2 + jsonObject["yoffset"]) / size; if (jsonObject.ContainsKey("imageData")) imgsymb.ImageData = jsonObject["imageData"]; else if (jsonObject.ContainsKey("url")) imgsymb.Source = jsonObject["url"]; var fill = imgsymb.Fill as ImageBrush; if (fill != null) fill.Stretch = Stretch.Uniform; symb = imgsymb; break; #endregion default: // all other REST defined cases symb = Symbol.FromJson(jsonObject.ToString()); break; } } } return symb; }
/// <summary> /// Creates a symbol compatible with Application Framework from JSON object /// </summary> /// <param name="jsonObject">JSON object defining a symbol</param> /// <returns>Symbol</returns> public static Symbol SymbolFromJson(JsonObject jsonObject) { Symbol symb = null; if (jsonObject != null) { string symbType = jsonObject["type"]; if (!string.IsNullOrEmpty(symbType)) { switch (symbType) { case "esriPMS":// REST defined PictureMarkerSymbol --> output: ImageFillSymbol #region ESRI.ArcGIS.Mapping.Core.Symbols.ImageFillSymbol imgsymb = new ESRI.ArcGIS.Mapping.Core.Symbols.ImageFillSymbol(); double size = 64; // standard size of images used for Viewer symbols if (jsonObject.ContainsKey("width")) size = jsonObject["width"]; imgsymb.Size = size; if (jsonObject.ContainsKey("xoffset")) imgsymb.OriginX = (size /2 + jsonObject["xoffset"]) / size; if (jsonObject.ContainsKey("yoffset")) imgsymb.OriginY = (size / 2 + jsonObject["yoffset"]) / size; if (jsonObject.ContainsKey("imageData")) imgsymb.ImageData = jsonObject["imageData"]; else if (jsonObject.ContainsKey("url")) imgsymb.Source = jsonObject["url"]; symb = imgsymb; break; #endregion default: // all other REST defined cases symb = Symbol.FromJson(jsonObject.ToString()); break; } } } return symb; }
private static MarkerSymbol cloneMarkerSymbol(MarkerSymbol symbol) { if (symbol == null) { return(null); } ESRI.ArcGIS.Mapping.Core.Symbols.ImageFillSymbol imageFillSymbol = symbol as ESRI.ArcGIS.Mapping.Core.Symbols.ImageFillSymbol; if (imageFillSymbol != null) { ESRI.ArcGIS.Mapping.Core.Symbols.ImageFillSymbol ifs = new ESRI.ArcGIS.Mapping.Core.Symbols.ImageFillSymbol() { Color = CloneBrush(imageFillSymbol.Color), ControlTemplate = imageFillSymbol.ControlTemplate, OffsetX = imageFillSymbol.OffsetX, OffsetY = imageFillSymbol.OffsetY, OriginX = imageFillSymbol.OriginX, OriginY = imageFillSymbol.OriginY, Opacity = imageFillSymbol.Opacity, Size = imageFillSymbol.Size, ImageData = imageFillSymbol.ImageData, Source = imageFillSymbol.Source, Fill = CloneBrush(imageFillSymbol.Fill), CursorName = imageFillSymbol.CursorName, }; return(ifs); } ESRI.ArcGIS.Mapping.Core.Symbols.MarkerSymbol ms = symbol as ESRI.ArcGIS.Mapping.Core.Symbols.MarkerSymbol; if (ms != null) { ESRI.ArcGIS.Mapping.Core.Symbols.MarkerSymbol marSymb = new ESRI.ArcGIS.Mapping.Core.Symbols.MarkerSymbol() { DisplayName = ms.DisplayName, Offset = new Point(ms.Offset.X, ms.Offset.Y), Color = CloneBrush(ms.Color), ControlTemplate = ms.ControlTemplate, OffsetX = ms.OffsetX, OffsetY = ms.OffsetY, OriginX = ms.OriginX, OriginY = ms.OriginY, Opacity = ms.Opacity, Size = ms.Size, }; return(marSymb); } ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol simpleMarkerSymbol = symbol as ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol; if (simpleMarkerSymbol != null) { ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol sms = new ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol() { Color = CloneBrush(simpleMarkerSymbol.Color), ControlTemplate = simpleMarkerSymbol.ControlTemplate, Size = simpleMarkerSymbol.Size, // Simple marker symbol doesn't allow setting OffsetX, OffsetY }; return(sms); } TextSymbol textSymbol = symbol as TextSymbol; if (textSymbol != null) { TextSymbol ts = new TextSymbol() { ControlTemplate = textSymbol.ControlTemplate, FontFamily = textSymbol.FontFamily, FontSize = textSymbol.FontSize, Foreground = CloneBrush(textSymbol.Foreground), OffsetX = textSymbol.OffsetX, OffsetY = textSymbol.OffsetY, Text = textSymbol.Text, }; return(ts); } PictureMarkerSymbol pictureMarkerSymbol = symbol as PictureMarkerSymbol; if (pictureMarkerSymbol != null) { PictureMarkerSymbol pictMs = new PictureMarkerSymbol() { ControlTemplate = pictureMarkerSymbol.ControlTemplate, Height = pictureMarkerSymbol.Height, OffsetX = pictureMarkerSymbol.OffsetX, OffsetY = pictureMarkerSymbol.OffsetY, Opacity = pictureMarkerSymbol.Opacity, Source = pictureMarkerSymbol.Source, Width = pictureMarkerSymbol.Width, }; return(pictMs); } MarkerSymbol markerS = new MarkerSymbol() { ControlTemplate = symbol.ControlTemplate, OffsetX = symbol.OffsetX, OffsetY = symbol.OffsetY, }; return(markerS); }
private void WriteMarkerSymbol(MarkerSymbol markerSymbol) { ICustomSymbol symbol = markerSymbol as ICustomSymbol; if (symbol != null) { symbol.Serialize(writer, Namespaces); return; } string prefix = Constants.esriPrefix; if (markerSymbol is ESRI.ArcGIS.Mapping.Core.Symbols.MarkerSymbol) prefix = Constants.esriMappingPrefix; else if (markerSymbol is ESRI.ArcGIS.Client.FeatureService.Symbols.SimpleMarkerSymbol || markerSymbol is ESRI.ArcGIS.Client.FeatureService.Symbols.PictureMarkerSymbol) prefix = Constants.esriFSSymbolsPrefix; StartType(markerSymbol, prefix); if (markerSymbol is SimpleMarkerSymbol) { #region Size,Style,Color SimpleMarkerSymbol sms = markerSymbol as SimpleMarkerSymbol; WriteAttribute("Size", sms.Size); if (sms.Style != SimpleMarkerSymbol.SimpleMarkerStyle.Circle) { WriteAttribute("Style", sms.Style.ToString()); } if (sms.Color is SolidColorBrush && sms.Color.Opacity == 1) { WriteAttribute("Color", (sms.Color as SolidColorBrush).Color); } else { writer.WriteStartElement("SimpleMarkerSymbol.Color", Namespaces[Constants.esriPrefix]); new BrushXamlWriter(writer, Namespaces).WriteBrush(sms.Color); writer.WriteEndElement(); } #endregion } else if (markerSymbol is ESRI.ArcGIS.Client.FeatureService.Symbols.PictureMarkerSymbol || markerSymbol is ESRI.ArcGIS.Client.FeatureService.Symbols.SimpleMarkerSymbol) { WriteJsonAttribute(markerSymbol as IJsonSerializable); } else { if (markerSymbol is ESRI.ArcGIS.Mapping.Core.Symbols.MarkerSymbol) { #region Size,OriginX, OriginY, Opacity ESRI.ArcGIS.Mapping.Core.Symbols.MarkerSymbol marker = markerSymbol as ESRI.ArcGIS.Mapping.Core.Symbols.MarkerSymbol; if (marker != null) { WriteAttribute("Size", marker.Size); WriteAttribute("OriginX", marker.OriginX); WriteAttribute("OriginY", marker.OriginY); if (marker.Opacity < 1) WriteAttribute("Opacity", marker.Opacity); } #endregion } else if (!(markerSymbol is ESRI.ArcGIS.Client.FeatureService.Symbols.PictureMarkerSymbol || markerSymbol is ESRI.ArcGIS.Client.FeatureService.Symbols.SimpleMarkerSymbol)) { #region OffsetX, OffsetY if (markerSymbol.OffsetX != 0) WriteAttribute("OffsetX", markerSymbol.OffsetX); if (markerSymbol.OffsetY != 0) WriteAttribute("OffsetY", markerSymbol.OffsetY); #endregion } PictureMarkerSymbol pms = markerSymbol as PictureMarkerSymbol; if (pms != null) { #region PMS WriteAttribute("Width", pms.Width); WriteAttribute("Height", pms.Height); if (pms.Opacity < 1) WriteAttribute("Opacity", pms.Opacity); string imageSource = SymbolExtensions.GetOriginalSource(pms); if (!string.IsNullOrEmpty(imageSource)) writer.WriteElementString(Constants.esriMappingPrefix, "SymbolExtensions.OriginalSource", Constants.esriMappingNamespace, imageSource); else { BitmapImage bmp = pms.Source as BitmapImage; if (bmp != null && bmp.UriSource != null) { WriteAttribute("Source", bmp.UriSource.OriginalString); } } #endregion } else if (markerSymbol is TextSymbol) { #region TS TextSymbol ts = markerSymbol as TextSymbol; WriteAttribute("FontSize", ts.FontSize); WriteAttribute("FontFamily", ts.FontFamily.Source); WriteAttribute("Text", ts.Text); if (ts.Foreground != null) { writer.WriteStartElement("TextSymbol.Foreground", Namespaces[Constants.esriPrefix]); new BrushXamlWriter(writer, Namespaces).WriteBrush(ts.Foreground); writer.WriteEndElement(); } #endregion } else if (markerSymbol is ESRI.ArcGIS.Mapping.Core.Symbols.ImageFillSymbol) { #region IFS: Source ESRI.ArcGIS.Mapping.Core.Symbols.ImageFillSymbol fillSymbol = markerSymbol as ESRI.ArcGIS.Mapping.Core.Symbols.ImageFillSymbol; if (!string.IsNullOrEmpty(fillSymbol.ImageData)) writer.WriteAttributeString("ImageData", fillSymbol.ImageData); else if (!string.IsNullOrEmpty(fillSymbol.Source)) writer.WriteAttributeString("Source", fillSymbol.Source); #endregion } else if (markerSymbol is ESRI.ArcGIS.Mapping.Core.Symbols.MarkerSymbol) { #region Color ESRI.ArcGIS.Mapping.Core.Symbols.MarkerSymbol marker = markerSymbol as ESRI.ArcGIS.Mapping.Core.Symbols.MarkerSymbol; if (marker != null) { if (marker.Color != null) { writer.WriteStartElement("MarkerSymbol.Color", Namespaces[Constants.esriMappingPrefix]); new BrushXamlWriter(writer, Namespaces).WriteBrush(marker.Color); writer.WriteEndElement(); } } #endregion } #region Feature Service Symbols - Not used //else if (markerSymbol is ESRI.ArcGIS.Client.FeatureService.Symbols.PictureMarkerSymbol) //{ // #region pms // ESRI.ArcGIS.Client.FeatureService.Symbols.PictureMarkerSymbol pmsfs = markerSymbol as ESRI.ArcGIS.Client.FeatureService.Symbols.PictureMarkerSymbol; // WriteAttribute("Width", pmsfs.Width); // WriteAttribute("Height", pmsfs.Height); // WriteAttribute("Opacity", pmsfs.Opacity); // WriteFeatureServiceMarkerSymbolProperties("PictureMarkerSymbol", pmsfs.Angle, pmsfs.XOffsetFromCenter, // pmsfs.YOffsetFromCenter, pmsfs.Color, pmsfs.SelectionColor, pmsfs.RenderTransformPoint); // #region Set ContentType,Url and ImageData to set Source // SetImageSourceRelatedProperties(pmsfs, pmsfs.ToJson()); // #endregion // #endregion //} //else if (markerSymbol is ESRI.ArcGIS.Client.FeatureService.Symbols.SimpleMarkerSymbol) //{ // #region smsfs // ESRI.ArcGIS.Client.FeatureService.Symbols.SimpleMarkerSymbol smsfs = markerSymbol as ESRI.ArcGIS.Client.FeatureService.Symbols.SimpleMarkerSymbol; // WriteAttribute("OutlineThickness", smsfs.OutlineThickness); // WriteAttribute("Size", smsfs.Size); // WriteAttribute("Style", smsfs.Style.ToString()); // WriteAttribute("OutlineStyle", smsfs.OutlineStyle.ToString()); // WriteFeatureServiceMarkerSymbolProperties("SimpleMarkerSymbol", smsfs.Angle, smsfs.XOffsetFromCenter, // smsfs.YOffsetFromCenter, smsfs.Color, smsfs.SelectionColor, smsfs.RenderTransformPoint); // if (smsfs.OutlineColor != null) // { // writer.WriteStartElement("SimpleMarkerSymbol.OutlineColor", Namespaces[Constants.esriFSSymbolsPrefix]); // new BrushXamlWriter(writer, Namespaces).WriteBrush(smsfs.OutlineColor); // writer.WriteEndElement(); // } // #endregion //} #endregion else throw new NotSupportedException(markerSymbol.GetType().FullName); } writer.WriteEndElement(); }
/// <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 MarkerSymbol cloneMarkerSymbol(MarkerSymbol symbol) { if (symbol == null) return null; ESRI.ArcGIS.Mapping.Core.Symbols.ImageFillSymbol imageFillSymbol = symbol as ESRI.ArcGIS.Mapping.Core.Symbols.ImageFillSymbol; if (imageFillSymbol != null) { ESRI.ArcGIS.Mapping.Core.Symbols.ImageFillSymbol ifs = new ESRI.ArcGIS.Mapping.Core.Symbols.ImageFillSymbol() { Color = CloneBrush(imageFillSymbol.Color), ControlTemplate = imageFillSymbol.ControlTemplate, OffsetX = imageFillSymbol.OffsetX, OffsetY = imageFillSymbol.OffsetY, OriginX = imageFillSymbol.OriginX, OriginY = imageFillSymbol.OriginY, Opacity = imageFillSymbol.Opacity, Size = imageFillSymbol.Size, ImageData = imageFillSymbol.ImageData, Source = imageFillSymbol.Source, Fill = CloneBrush(imageFillSymbol.Fill), CursorName = imageFillSymbol.CursorName, }; return ifs; } ESRI.ArcGIS.Mapping.Core.Symbols.MarkerSymbol ms = symbol as ESRI.ArcGIS.Mapping.Core.Symbols.MarkerSymbol; if (ms != null) { ESRI.ArcGIS.Mapping.Core.Symbols.MarkerSymbol marSymb = new ESRI.ArcGIS.Mapping.Core.Symbols.MarkerSymbol() { DisplayName = ms.DisplayName, Offset = new Point(ms.Offset.X, ms.Offset.Y), Color = CloneBrush(ms.Color), ControlTemplate = ms.ControlTemplate, OffsetX = ms.OffsetX, OffsetY = ms.OffsetY, OriginX = ms.OriginX, OriginY = ms.OriginY, Opacity = ms.Opacity, Size = ms.Size, }; return marSymb; } ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol simpleMarkerSymbol = symbol as ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol; if (simpleMarkerSymbol != null) { ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol sms = new ESRI.ArcGIS.Client.Symbols.SimpleMarkerSymbol() { Color = CloneBrush(simpleMarkerSymbol.Color), ControlTemplate = simpleMarkerSymbol.ControlTemplate, Size = simpleMarkerSymbol.Size, // Simple marker symbol doesn't allow setting OffsetX, OffsetY }; return sms; } TextSymbol textSymbol = symbol as TextSymbol; if (textSymbol != null) { TextSymbol ts = new TextSymbol() { ControlTemplate = textSymbol.ControlTemplate, FontFamily = textSymbol.FontFamily, FontSize = textSymbol.FontSize, Foreground = CloneBrush(textSymbol.Foreground), OffsetX = textSymbol.OffsetX, OffsetY = textSymbol.OffsetY, Text = textSymbol.Text, }; return ts; } PictureMarkerSymbol pictureMarkerSymbol = symbol as PictureMarkerSymbol; if (pictureMarkerSymbol != null) { PictureMarkerSymbol pictMs = new PictureMarkerSymbol() { ControlTemplate = pictureMarkerSymbol.ControlTemplate, Height = pictureMarkerSymbol.Height, OffsetX = pictureMarkerSymbol.OffsetX, OffsetY = pictureMarkerSymbol.OffsetY, Opacity = pictureMarkerSymbol.Opacity, Source = pictureMarkerSymbol.Source, Width = pictureMarkerSymbol.Width, }; return pictMs; } MarkerSymbol markerS = new MarkerSymbol() { ControlTemplate = symbol.ControlTemplate, OffsetX = symbol.OffsetX, OffsetY = symbol.OffsetY, }; return markerS; }