public static CIMFill CreateHatchFill(double angleDegrees, double separation, CIMColor color = null) { var hatchFill = new CIMHatchFill(); hatchFill.Enable = true; hatchFill.Rotation = angleDegrees; hatchFill.Separation = separation; hatchFill.LineSymbol = CreateLineSymbol(color); return(hatchFill); }
public RemoveOverlapsFeedback() { CIMColor color = ColorFactory.Instance.CreateRGBColor(255, 0, 0); _overlapLineSymbol = SymbolFactory.Instance.ConstructLineSymbol(color, 2); var hatchFill = new CIMHatchFill { Enable = true, Rotation = 0.0, Separation = 2.5, LineSymbol = _overlapLineSymbol }; var symbolLayers = new List <CIMSymbolLayer>(); symbolLayers.AddRange(_overlapLineSymbol.SymbolLayers); symbolLayers.Add(hatchFill); _overlapPolygonSymbol = new CIMPolygonSymbol { SymbolLayers = symbolLayers.ToArray() }; }
public static CIMPolygonSymbol CreateHatchFillSymbol(float red, float green, float blue, double rotation = 0, double lineWidth = 2, double lineSeparation = 5) { CIMLineSymbol lineSymbol = CreateLineSymbol(red, green, blue, lineWidth); var hatchFill = new CIMHatchFill { Enable = true, Rotation = rotation, Separation = lineSeparation, LineSymbol = lineSymbol }; var symbolLayers = new List <CIMSymbolLayer>(); symbolLayers.AddRange(lineSymbol.SymbolLayers); symbolLayers.Add(hatchFill); return(new CIMPolygonSymbol { SymbolLayers = symbolLayers.ToArray() }); }
public void btnChangeRoomSymbology(object sender, EventArgs e) { var polygonSymbology = ((RadioButton)sender).Tag; QueuedTask.Run(() => { //Get the active map's definition - CIMMap. if (polygonSymbology.ToString() == "None") { var cimMap = MapView.Active.Map.GetDefinition(); Debug.WriteLine(cimMap.ToString()); Debug.WriteLine(cimMap.ToXml()); //FeatureLayer a = MapView.Active.Map.Layers[1] as FeatureLayer; var lyr = MapView.Active.Map.GetLayersAsFlattenedList().OfType <FeatureLayer>().FirstOrDefault(s => s.ShapeType == esriGeometryType.esriGeometryPolygon); CIMSimpleRenderer renderer = lyr.GetRenderer() as CIMSimpleRenderer; CIMStroke outline = SymbolFactory.Instance.ConstructStroke( ColorFactory.Instance.GreyRGB, 0.5, SimpleLineStyle.Solid); CIMPolygonSymbol fillWithOutline = SymbolFactory.Instance.ConstructPolygonSymbol( ColorFactory.Instance.CreateRGBColor(255, 255, 255), SimpleFillStyle.Solid, outline); //Update the symbol of the current simple renderer renderer.Symbol = fillWithOutline.MakeSymbolReference(); //Update the feature layer renderer lyr.SetRenderer(renderer); } if (polygonSymbology.ToString() == "Multicolor1") { Debug.WriteLine("Multicolor1"); var cimMap = MapView.Active.Map.GetDefinition(); //FeatureLayer a = MapView.Active.Map.Layers[1] as FeatureLayer; var lyr = MapView.Active.Map.GetLayersAsFlattenedList().OfType <FeatureLayer>().FirstOrDefault(s => s.ShapeType == esriGeometryType.esriGeometryPolygon); CIMUniqueValueRenderer renderer = lyr.GetRenderer() as CIMUniqueValueRenderer; // color ramp CIMICCColorSpace colorSpace = new CIMICCColorSpace() { URL = "Default RGB" }; CIMRandomHSVColorRamp randomHSVColorRamp = new CIMRandomHSVColorRamp() { ColorSpace = colorSpace, MinAlpha = 100, MaxAlpha = 100, MinH = 0, MaxH = 360, MinS = 15, MaxS = 30, MinV = 99, MaxV = 100, Seed = 0 }; UniqueValueRendererDefinition uvr = new UniqueValueRendererDefinition() { ValueFields = new string[] { "GROUP_DESCRIPTION" }, //multiple fields in the array if needed. ColorRamp = randomHSVColorRamp //Specify color ramp }; var r = lyr.CreateRenderer(uvr); //var sc = r.GetSchema(); lyr.SetRenderer(r); CIMUniqueValueRenderer r2 = lyr.GetRenderer() as CIMUniqueValueRenderer; foreach (var item in r2.Groups) { var g = item as CIMUniqueValueGroup; foreach (var c in g.Classes) { if (c.Label == "Multiple") //change this to 'Multiple' { //example for simple color //var alaskaColor = CIMColor.CreateRGBColor(255, 0, 0); //var s = new CIMSymbolReference() { Symbol = SymbolFactory.Instance.ConstructPolygonSymbol(alaskaColor) }; List <CIMSymbolLayer> symbolLayers = new List <CIMSymbolLayer>(); CIMStroke outline = SymbolFactory.Instance.ConstructStroke(CIMColor.CreateRGBColor(0, 0, 0, 50.0), 2.0, SimpleLineStyle.Solid); symbolLayers.Add(outline); var solid = SymbolFactory.Instance.ConstructStroke(CIMColor.CreateRGBColor(255, 0, 0, 50.0), 1.0, SimpleLineStyle.Solid); CIMHatchFill h = new CIMHatchFill() { Enable = true, Rotation = -45.0, Separation = 5.0, LineSymbol = new CIMLineSymbol() { SymbolLayers = new CIMSymbolLayer[1] { solid } } }; symbolLayers.Add(h); CIMPolygonSymbol p = new CIMPolygonSymbol() { SymbolLayers = symbolLayers.ToArray() }; var s = new CIMSymbolReference() { Symbol = p }; c.Symbol = s; } } } lyr.SetRenderer(r2); } if (polygonSymbology.ToString() == "Multicolor2") { Debug.WriteLine("Multicolor2"); var cimMap = MapView.Active.Map.GetDefinition(); //FeatureLayer a = MapView.Active.Map.Layers[1] as FeatureLayer; var lyr = MapView.Active.Map.GetLayersAsFlattenedList().OfType <FeatureLayer>().FirstOrDefault(s => s.ShapeType == esriGeometryType.esriGeometryPolygon); CIMUniqueValueRenderer renderer = lyr.GetRenderer() as CIMUniqueValueRenderer; // color ramp CIMICCColorSpace colorSpace = new CIMICCColorSpace() { URL = "Default RGB" }; CIMRandomHSVColorRamp randomHSVColorRamp = new CIMRandomHSVColorRamp() { ColorSpace = colorSpace, MinAlpha = 100, MaxAlpha = 100, MinH = 0, MaxH = 360, MinS = 15, MaxS = 30, MinV = 99, MaxV = 100, Seed = 0 }; UniqueValueRendererDefinition uvr = new UniqueValueRendererDefinition() { ValueFields = new string[] { "FUNCTION_DESCRIPTION" }, //multiple fields in the array if needed. ColorRamp = randomHSVColorRamp //Specify color ramp }; var r = lyr.CreateRenderer(uvr); //var sc = r.GetSchema(); lyr.SetRenderer(r); CIMUniqueValueRenderer r2 = lyr.GetRenderer() as CIMUniqueValueRenderer; foreach (var item in r2.Groups) { var g = item as CIMUniqueValueGroup; foreach (var c in g.Classes) { if (c.Label == "Multiple") //change this to 'Multiple' { //example for simple color //var alaskaColor = CIMColor.CreateRGBColor(255, 0, 0); //var s = new CIMSymbolReference() { Symbol = SymbolFactory.Instance.ConstructPolygonSymbol(alaskaColor) }; List <CIMSymbolLayer> symbolLayers = new List <CIMSymbolLayer>(); CIMStroke outline = SymbolFactory.Instance.ConstructStroke(CIMColor.CreateRGBColor(0, 0, 0, 50.0), 2.0, SimpleLineStyle.Solid); symbolLayers.Add(outline); var solid = SymbolFactory.Instance.ConstructStroke(CIMColor.CreateRGBColor(255, 0, 0, 50.0), 1.0, SimpleLineStyle.Solid); CIMHatchFill h = new CIMHatchFill() { Enable = true, Rotation = -45.0, Separation = 5.0, LineSymbol = new CIMLineSymbol() { SymbolLayers = new CIMSymbolLayer[1] { solid } } }; symbolLayers.Add(h); CIMPolygonSymbol p = new CIMPolygonSymbol() { SymbolLayers = symbolLayers.ToArray() }; var s = new CIMSymbolReference() { Symbol = p }; c.Symbol = s; } } } lyr.SetRenderer(r2); } if (polygonSymbology.ToString() == "Multicolor3") { Debug.WriteLine("Multicolor2"); var cimMap = MapView.Active.Map.GetDefinition(); //FeatureLayer a = MapView.Active.Map.Layers[1] as FeatureLayer; var lyr = MapView.Active.Map.GetLayersAsFlattenedList().OfType <FeatureLayer>().FirstOrDefault(s => s.ShapeType == esriGeometryType.esriGeometryPolygon); CIMUniqueValueRenderer renderer = lyr.GetRenderer() as CIMUniqueValueRenderer; // color ramp CIMICCColorSpace colorSpace = new CIMICCColorSpace() { URL = "Default RGB" }; CIMRandomHSVColorRamp randomHSVColorRamp = new CIMRandomHSVColorRamp() { ColorSpace = colorSpace, MinAlpha = 100, MaxAlpha = 100, MinH = 0, MaxH = 360, MinS = 15, MaxS = 30, MinV = 99, MaxV = 100, Seed = 0 }; UniqueValueRendererDefinition uvr = new UniqueValueRendererDefinition() { ValueFields = new string[] { "USE_CODE_DESCRIPTION" }, //multiple fields in the array if needed. ColorRamp = randomHSVColorRamp //Specify color ramp }; var r = lyr.CreateRenderer(uvr); //var sc = r.GetSchema(); lyr.SetRenderer(r); CIMUniqueValueRenderer r2 = lyr.GetRenderer() as CIMUniqueValueRenderer; foreach (var item in r2.Groups) { var g = item as CIMUniqueValueGroup; foreach (var c in g.Classes) { if (c.Label == "Multiple") //change this to 'Multiple' { //example for simple color //var alaskaColor = CIMColor.CreateRGBColor(255, 0, 0); //var s = new CIMSymbolReference() { Symbol = SymbolFactory.Instance.ConstructPolygonSymbol(alaskaColor) }; List <CIMSymbolLayer> symbolLayers = new List <CIMSymbolLayer>(); CIMStroke outline = SymbolFactory.Instance.ConstructStroke(CIMColor.CreateRGBColor(0, 0, 0, 50.0), 2.0, SimpleLineStyle.Solid); symbolLayers.Add(outline); var solid = SymbolFactory.Instance.ConstructStroke(CIMColor.CreateRGBColor(255, 0, 0, 50.0), 1.0, SimpleLineStyle.Solid); CIMHatchFill h = new CIMHatchFill() { Enable = true, Rotation = -45.0, Separation = 5.0, LineSymbol = new CIMLineSymbol() { SymbolLayers = new CIMSymbolLayer[1] { solid } } }; symbolLayers.Add(h); CIMPolygonSymbol p = new CIMPolygonSymbol() { SymbolLayers = symbolLayers.ToArray() }; var s = new CIMSymbolReference() { Symbol = p }; c.Symbol = s; } } } lyr.SetRenderer(r2); } if (polygonSymbology.ToString() == "Beige") { var cimMap = MapView.Active.Map.GetDefinition(); //FeatureLayer a = MapView.Active.Map.Layers[1] as FeatureLayer; var lyr = MapView.Active.Map.GetLayersAsFlattenedList().OfType <FeatureLayer>().FirstOrDefault(s => s.ShapeType == esriGeometryType.esriGeometryPolygon); //CIMSimpleRenderer renderer = lyr.GetRenderer() as CIMSimpleRenderer; CIMSimpleRenderer renderer = new CIMSimpleRenderer() { }; CIMStroke outline = SymbolFactory.Instance.ConstructStroke( ColorFactory.Instance.GreyRGB, 0.5, SimpleLineStyle.Solid); CIMPolygonSymbol fillWithOutline = SymbolFactory.Instance.ConstructPolygonSymbol( ColorFactory.Instance.CreateRGBColor(255, 222, 173), SimpleFillStyle.Solid, outline); //Update the symbol of the current simple renderer renderer.Symbol = fillWithOutline.MakeSymbolReference(); //Update the feature layer renderer lyr.SetRenderer(renderer); /* * * unique value rendere * internal static Task UniqueValueRenderer(FeatureLayer featureLayer) * { * return QueuedTask.Run(() => * { * //construct unique value renderer definition * UniqueValueRendererDefinition uvr = new * UniqueValueRendererDefinition() * { * ValueFields = new string[] { SDKHelpers.GetDisplayField(featureLayer) }, //multiple fields in the array if needed. * ColorRamp = SDKHelpers.GetColorRamp(), //Specify color ramp * }; * * //Creates a "Renderer" * var cimRenderer = featureLayer.CreateRenderer(uvr); * * //Sets the renderer to the feature layer * featureLayer.SetRenderer(cimRenderer); * }); * * } * * * diagonal cross hatch example * public static Task<CIMPolygonSymbol> CreateDiagonalCrossPolygonAsync() * { * return QueuedTask.Run<CIMPolygonSymbol>(() => * { * var trans = 50.0;//semi transparent * CIMStroke outline = SymbolFactory.Instance.ConstructStroke(CIMColor.CreateRGBColor(0, 0, 0, trans), 2.0, SimpleLineStyle.Solid); * * //Stroke for the fill * var solid = SymbolFactory.Instance.ConstructStroke(CIMColor.CreateRGBColor(255, 0, 0, trans), 1.0, SimpleLineStyle.Solid); * * //Mimic cross hatch * CIMFill[] diagonalCross = * { * new CIMHatchFill() { * Enable = true, * Rotation = 45.0, * Separation = 5.0, * LineSymbol = new CIMLineSymbol() { SymbolLayers = new CIMSymbolLayer[1] { solid } } * }, * new CIMHatchFill() { * Enable = true, * Rotation = -45.0, * Separation = 5.0, * LineSymbol = new CIMLineSymbol() { SymbolLayers = new CIMSymbolLayer[1] { solid } } * } * }; * List<CIMSymbolLayer> symbolLayers = new List<CIMSymbolLayer>(); * symbolLayers.Add(outline); * foreach (var fill in diagonalCross) * symbolLayers.Add(fill); * return new CIMPolygonSymbol() { SymbolLayers = symbolLayers.ToArray() }; * }); * } */ } }); Debug.WriteLine(MapView.Active.Map.Layers[0].Name); // .SetLabelVisibility(true); Debug.WriteLine(MapView.Active.Map.Layers[1].Name); // .SetLabelVisibility(true); //Debug.WriteLine(MapView.Active.Map.SetLabelEngine }