public override void SetValue(object value)
        {
            FeatureInfo feature = value as FeatureInfo;

            if (feature.IsNew)
            {
                var           size   = ScaleToDeviceDPI(new Size(16, 16));
                var           icon1  = new C1PolygonIcon();
                List <PointF> points = new List <PointF>();
                points.Add(new PointF(12.115f, 8.084f));
                points.Add(new PointF(14.158f, 6.093f));
                points.Add(new PointF(10.929f, 5.623f));
                points.Add(new PointF(11.322f, 2.681f));
                points.Add(new PointF(9.202f, 3.897f));
                points.Add(new PointF(8.121f, 1.706f));
                points.Add(new PointF(6.807f, 4.367f));
                points.Add(new PointF(3.863f, 2.956f));
                points.Add(new PointF(4.449f, 5.749f));
                points.Add(new PointF(2.083f, 6.093f));
                points.Add(new PointF(3.943f, 7.907f));
                points.Add(new PointF(1.821f, 10.135f));
                points.Add(new PointF(4.857f, 10.462f));
                points.Add(new PointF(4.389f, 13.19f));
                points.Add(new PointF(6.748f, 11.95f));
                points.Add(new PointF(8.016f, 14.296f));
                points.Add(new PointF(9.15f, 11.77f));
                points.Add(new PointF(11.852f, 13.19f));
                points.Add(new PointF(11.332f, 10.157f));
                points.Add(new PointF(13.889f, 9.688f));
                icon1.Points   = points.ToArray();
                icon1.IsClosed = true;
                icon1.Color    = Color.FromArgb(220, 154, 49);
                icon1.Size     = size;
                var icon2 = new C1PathIcon();
                icon2.Data  = "M8.121,1.706l1.081,2.191l2.12-1.217l-0.394,2.942l3.229,0.47l-2.043,1.991l1.773,1.604l-2.557,0.469l0.52,3.033L9.15,11.77l-1.135,2.526L6.748,11.95l-2.359,1.24l0.469-2.729l-3.037-0.327l2.123-2.228L2.083,6.093l2.367-0.344L3.863,2.956l2.943,1.411L8.121,1.706 M8.121,0L7.443,1.372L6.461,3.364L4.19,2.275L2.812,1.614L3.125,3.11l0.42,2.008L1.974,5.346l-1.513,0.22l1.095,1.067l1.327,1.294L1.274,9.614L0.22,10.722l1.521,0.163l2.237,0.241l-0.333,1.938L3.387,14.57l1.354-0.712l1.699-0.893l0.912,1.688L8.078,16l0.627-1.396l0.805-1.793l1.991,1.047l1.354,0.712l-0.259-1.507l-0.394-2.298l1.823-0.335l1.504-0.274L14.395,9.13l-1.178-1.066l1.469-1.43l1.095-1.068l-1.513-0.22l-2.492-0.362l0.295-2.202l0.203-1.517l-1.326,0.762L9.523,2.843L8.797,1.372L8.121,0L8.121,0z";
                icon2.Color = Color.White;
                icon2.Size  = size;
                var icon = new C1CompositeIcon();
                icon.Size = size;
                icon.Icons.Add(icon2);
                icon.Icons.Add(icon1);
                _newIcon = IconElement.CreateElement(icon);
            }
            _text.Text = value?.ToString();
        }
        // C1Icon is UI-less object which can be used to specify icon properties, layout and other options.
        // To show C1Icon, application should create IconElements and put them inside some layout panel.
        // BuildUI method creates elements for every icon and puts them into uniform grid cells.
        private void BuildUI()
        {
            if (_icons == null || _icons.Count < 1)
            {
                return;
            }

            // create uniform grid with the same number of rows and columns
            int count = (int)Math.Floor(Math.Sqrt(_icons.Count));

            _element = new UniformGrid(count, count);
            Element  = _element;
            Element.Parent.Bounds    = this.Bounds;
            _element.Style           = new Style();
            _element.Style.Margins   = new Thickness(4);
            _element.Style.ForeColor = ForeColor;

            // Create IconElements for each icon and place them into uniform grid
            int r = 0;
            int c = 0;

            foreach (C1Icon icon in _icons)
            {
                // Use factory method IconElement.CreateElement(icon) to create elements.
                // This method returns IconElement instances specific to icon type.
                // For example, for C1PathIcon it returns PathIconElement.
                var iconElement = IconElement.CreateElement(icon);

                // place IconElement into grid cell
                _element[r, c].Element = iconElement;
                c++;
                if (c > count - 1)
                {
                    c = 0;
                    r++;
                }
            }
        }