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); } }
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); }
/// <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(); }