Exemple #1
0
        public void Draw(double mapScale)
        {
            LegendItems.Clear();
            if (featureLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Count > 0)
            {
                Style style = featureLayer.ZoomLevelSet.ZoomLevel01.CustomStyles[0];

                if (style is CustomDotDensityStyle)
                {
                    LegendItems.Add(new DotDensityLegendItem(5));
                    LegendItems.Add(new DotDensityLegendItem(10));
                    LegendItems.Add(new DotDensityLegendItem(20));
                    LegendItems.Add(new DotDensityLegendItem(40));
                }
                else if (style is PieZedGraphStyle)
                {
                    PieZedGraphStyle zedGraphStyle = (PieZedGraphStyle)style;

                    foreach (KeyValuePair <string, GeoColor> item in zedGraphStyle.PieSlices)
                    {
                        AreaStyle          fillStyle  = new AreaStyle(new GeoSolidBrush(item.Value));
                        PieChartLegendItem legendItem = new PieChartLegendItem(fillStyle, item.Key);
                        this.LegendItems.Add(legendItem);
                    }
                }
                else if (style is ValueCircleStyle)
                {
                    LegendItems.Add(new ValueCircleLegendItem(80));
                    LegendItems.Add(new ValueCircleLegendItem(16));
                    LegendItems.Add(new ValueCircleLegendItem(32));
                    LegendItems.Add(new ValueCircleLegendItem(64));
                    LegendItems.Add(new ValueCircleLegendItem(1280));
                }
                else if (style is ClassBreakStyle)
                {
                    ClassBreakStyle thematicStyle = (ClassBreakStyle)style;

                    for (int i = 0; i < thematicStyle.ClassBreaks.Count; i++)
                    {
                        ThematicLegendItem thematicLegendItem;
                        if (i < thematicStyle.ClassBreaks.Count - 1)
                        {
                            thematicLegendItem = new ThematicLegendItem(thematicStyle.ClassBreaks[i], thematicStyle.ClassBreaks[i + 1]);
                        }
                        else
                        {
                            thematicLegendItem = new ThematicLegendItem(thematicStyle.ClassBreaks[i], null);
                        }
                        LegendItems.Add(thematicLegendItem);
                    }
                }

                foreach (var legendItem in LegendItems)
                {
                    legendItem.Draw(style);
                }
            }
        }
        /// <summary>
        /// Initializes a new instance of the FunctionSeries class.
        /// </summary>
        public FunctionSeries()
        {
            LegendItem = new LegendItem();
            LegendItems.Add(LegendItem);
            Clip         = ClipGeometry = new RectangleGeometry();
            SizeChanged += OnSizeChanged;

            // Explicitly load the default template since the samples project
            // is an application and does not have a generic.xaml file.
            Template  = XamlReader.Load(DefaultTemplate) as ControlTemplate;
            LineBrush = new SolidColorBrush(Colors.Purple);
        }
 /// <summary>
 /// Common logic for entering the chart.
 /// </summary>
 /// <param name="icelc">The context.</param>
 /// <param name="cc">The component entering chart.</param>
 protected void ComponentEnter(IChartEnterLeaveContext icelc, ChartComponent cc)
 {
     // pre-load resources
     if (cc is IRequireChartTheme irct)
     {
         if (Theme == null)
         {
             Report(new ChartValidationResult("Chart", $"The {nameof(Theme)} property is NULL, chart elements may not be visible", new[] { cc.NameOrType(), nameof(Theme) }));
         }
         else
         {
             irct.Theme = Theme;
         }
     }
     // invoke IREL
     if (cc is IRequireEnterLeave irel)
     {
         irel.Enter(icelc);
     }
     // for now anything can provide legend items
     if (cc is IProvideLegend ipl)
     {
         foreach (var li in ipl.LegendItems)
         {
             LegendItems.Add(li);
         }
     }
     if (cc is IProvideLegendDynamic ipld)
     {
         // attach the event
         ipld.LegendChanged -= Ipld_LegendChanged;
         ipld.LegendChanged += Ipld_LegendChanged;
     }
     // axis and DSRP are mutually-exclusive
     if (cc is IChartAxis ica)
     {
         Axes.Add(ica);
     }
     if (cc is IProvideDataSourceRenderer ipdsr)
     {
         Register(ipdsr.Renderer);
     }
     else if (cc is IDataSourceRenderer idsr)
     {
         Register(idsr);
     }
     foreach (var px in AllPhases)
     {
         px.Enter(cc);
     }
 }
Exemple #4
0
        public LegendAdornmentLayerViewModel()
            : this(new LegendAdornmentLayer {
            Name = LegendHelper.GenerateLegendName()
        })
        {
            var legendItemViewModel = new LegendItemViewModel();

            legendItemViewModel.Text                     = GisEditor.LanguageManager.GetStringResource("PreferenceWindowTitleText");
            legendItemViewModel.LegendItemType           = LegendItemType.Header;
            legendItemViewModel.TextLeftPadding          = 10;
            legendItemViewModel.NotifiedGeoFont          = new GeoFontViewModel();
            legendItemViewModel.NotifiedGeoFont.FontSize = 10;
            LegendItems.Add(legendItemViewModel);
        }
Exemple #5
0
        /// <summary>
        ///     Creates a legend item for each data point.
        /// </summary>
        /// <param name="dataPoint">The data point added.</param>
        protected override void AddDataPoint(DataPoint dataPoint)
        {
            base.AddDataPoint(dataPoint);
            var pieDataPoint = (PieDataPoint)dataPoint;

            int        index      = ActiveDataPoints.IndexOf(dataPoint) + 1;
            LegendItem legendItem = CreatePieLegendItem(dataPoint, index);

            // Grab a style enumerator if we don't have one already.
            if (_resourceDictionaryEnumerator == null)
            {
                _resourceDictionaryEnumerator = GetResourceDictionaryWithTargetType(this, typeof(PieDataPoint), true);
            }

            if (_resourceDictionaryEnumerator.MoveNext())
            {
                ResourceDictionary paletteResources =
#if SILVERLIGHT
                    _resourceDictionaryEnumerator.Current.ShallowCopy();
#else
                    _resourceDictionaryEnumerator.Current;
#endif
                pieDataPoint.PaletteResources = paletteResources;
                pieDataPoint.Resources.MergedDictionaries.Add(paletteResources);
            }
            else
            {
                pieDataPoint.PaletteResources = null;
            }
            pieDataPoint.ActualDataPointStyle = DataPointStyle ?? pieDataPoint.Resources[DataPointStyleName] as Style;
            pieDataPoint.SetBinding(StyleProperty,
                                    new Binding(PieDataPoint.ActualDataPointStyleName)
            {
                Source = pieDataPoint
            });
            pieDataPoint.ActualLegendItemStyle = LegendItemStyle ??
                                                 (pieDataPoint.Resources[LegendItemStyleName] as Style);
            legendItem.SetBinding(StyleProperty, new Binding(ActualLegendItemStyleName)
            {
                Source = pieDataPoint
            });

            _dataPointLegendItems[dataPoint] = legendItem;
            LegendItems.Add(legendItem);
            UpdateLegendItemIndexes();
        }
 /// <summary>
 /// Manage dynamic legend updates.
 /// </summary>
 /// <param name="sender">Component sending update.</param>
 /// <param name="ldea">Current state of legend.</param>
 private void Ipld_LegendChanged(ChartComponent sender, LegendDynamicEventArgs ldea)
 {
     foreach (var prev in ldea.PreviousItems)
     {
         if (!ldea.CurrentItems.Contains(prev))
         {
             LegendItems.Remove(prev);
         }
     }
     foreach (var curr in ldea.CurrentItems)
     {
         if (!LegendItems.Contains(curr))
         {
             LegendItems.Add(curr);
         }
     }
 }
        /// <summary>
        /// Creates a legend item for each data point.
        /// </summary>
        /// <param name="dataPoint">The data point added.</param>
        protected override void AddDataPoint(DataPoint dataPoint)
        {
            base.AddDataPoint(dataPoint);

            int   index = ActiveDataPoints.IndexOf(dataPoint) + 1;
            Style style = NextStyle(typeof(PieDataPoint), true);

            if (dataPoint.Style == null)
            {
                dataPoint.Style = style;
            }

            LegendItem legendItem = CreatePieLegendItem(dataPoint, index);

            _dataPointLegendItems[dataPoint] = legendItem;
            LegendItems.Add(legendItem);
            UpdateLegendItemIndexes();
        }
        /// <summary>
        /// Creates a legend item for each data point.
        /// </summary>
        /// <param name="dataPoint">The data point added.</param>
        protected override void AddDataPoint(DataPoint dataPoint)
        {
            base.AddDataPoint(dataPoint);

            int index = ActiveDataPoints.IndexOf(dataPoint) + 1;

            // Grab a style enumerator if we don't have one already.
            if (_styleEnumerator == null)
            {
                _styleEnumerator = this.GetStylesWithTargetType(typeof(PieDataPoint), true);
            }

            if (_styleEnumerator.MoveNext())
            {
                Style style = _styleEnumerator.Current;
                dataPoint.SetStyle(style);
            }

            LegendItem legendItem = CreatePieLegendItem(dataPoint, index);

            _dataPointLegendItems[dataPoint] = legendItem;
            LegendItems.Add(legendItem);
            UpdateLegendItemIndexes();
        }