コード例 #1
0
ファイル: SymbolUtils.cs プロジェクト: esride-jts/ProSuite
        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);
        }
コード例 #2
0
        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()
            };
        }
コード例 #3
0
ファイル: SymbolUtils.cs プロジェクト: sungaoyong/ProSuite
        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()
            });
        }
コード例 #4
0
        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
        }