public class SerializableSymbol { //Properties public Color ColorFill { get; set; } public Color BorderBrush { get; set; } public Double SizeThickness { get; set; } public Int32 Style { get; set; } public SymbolType Type { get; set; } public enum SymbolType { SimpleMarkerSymbol = 0, SimpleLineSymbol = 1, SimpleFillSymbol = 2 } //Constructors public SerializableSymbol() { } public SerializableSymbol(Symbol symbol) { if (symbol is SimpleMarkerSymbol) { SimpleMarkerSymbol simpleMarkerSymbol = ((SimpleMarkerSymbol)symbol); ColorFill = ((SolidColorBrush)simpleMarkerSymbol.Color).Color; SizeThickness = simpleMarkerSymbol.Size; Style = (Int32)simpleMarkerSymbol.Style; Type = SymbolType.SimpleMarkerSymbol; } else if (symbol is SimpleLineSymbol) { SimpleLineSymbol simpleLineSymbol = ((SimpleLineSymbol)symbol); ColorFill = ((SolidColorBrush)simpleLineSymbol.Color).Color; SizeThickness = simpleLineSymbol.Width; Style = (Int32)simpleLineSymbol.Style; Type = SymbolType.SimpleLineSymbol; } else if (symbol is SimpleFillSymbol) { SimpleFillSymbol simpleFillSymbol = ((SimpleFillSymbol)symbol); ColorFill = ((SolidColorBrush)simpleFillSymbol.Fill).Color; BorderBrush = ((SolidColorBrush)simpleFillSymbol.Fill).Color; SizeThickness = simpleFillSymbol.BorderThickness; Type = SymbolType.SimpleFillSymbol; } } //Operators public static explicit operator SerializableSymbol(Symbol symbol) { SerializableSymbol serializableSymbol = new SerializableSymbol(symbol); return serializableSymbol; } public static implicit operator Symbol(SerializableSymbol serializableSymbol) { if (serializableSymbol.Type == SymbolType.SimpleMarkerSymbol) { SimpleMarkerSymbol symbol = new SimpleMarkerSymbol(); symbol.Color = new SolidColorBrush(serializableSymbol.ColorFill); symbol.Size = serializableSymbol.SizeThickness; symbol.Style = (SimpleMarkerSymbol.SimpleMarkerStyle)serializableSymbol.Style; return symbol; } else if (serializableSymbol.Type == SymbolType.SimpleLineSymbol) { SimpleLineSymbol symbol = new SimpleLineSymbol(); symbol.Color = new SolidColorBrush(serializableSymbol.ColorFill); symbol.Width = serializableSymbol.SizeThickness; symbol.Style = (SimpleLineSymbol.LineStyle)serializableSymbol.Style; return symbol; } else if (serializableSymbol.Type == SymbolType.SimpleFillSymbol) { SimpleFillSymbol symbol = new SimpleFillSymbol(); symbol.Fill = new SolidColorBrush(serializableSymbol.ColorFill); symbol.BorderBrush = new SolidColorBrush(serializableSymbol.BorderBrush); symbol.BorderThickness = serializableSymbol.SizeThickness; return symbol; } else return null; } } public class SerializableGraphic { //Properties public ESRI.ArcGIS.Client.Geometry.Geometry Geometry { get; set; } public SerializableSymbol Symbol { get; set; } public IDictionary<String, object> Attributes { get; set; } //Constructor public SerializableGraphic() { } public SerializableGraphic(Graphic graphic) { Geometry = graphic.Geometry; Attributes = graphic.Attributes; Symbol = new SerializableSymbol(graphic.Symbol); } //Operators public static explicit operator SerializableGraphic(Graphic graphic) { SerializableGraphic serializableGraphic = new SerializableGraphic(graphic); return serializableGraphic; } public static implicit operator Graphic(SerializableGraphic serializableGraphic) { Graphic graphic = new Graphic { Geometry = serializableGraphic.Geometry, Symbol = serializableGraphic.Symbol, }; foreach (String key in serializableGraphic.Attributes.Keys) graphic.Attributes.Add(key, serializableGraphic.Attributes[key]); return graphic; } }
[DataContract] public class SerializableFeature { public Graphic ToGraphic() { Graphic g = new Graphic() { Geometry = Geometry }; foreach(string key in Attributes.Keys) g.Attributes.Add(key, Attributes[key]); g.Symbol = new SimpleMarkerSymbol() { Color = new SolidColorBrush(Color) }; return g; } }
public class SerializableFeature { public SerializableFeature(Graphic g) { Geometry = g.Geometry; Attributes = g.Attributes; Color = ((g.Symbol as SimpleMarkerSymbol).Color as SolidColorBrush).Color; } public Geometry Geometry { get; set; } public Color Color { get; set; } public IDictionary<string,object> Attributes { get; set; } }
Aangemelde leden kunnen berichten plaatsen, updates volgen en meer. Nieuw hier? Registreer een gratis account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.