예제 #1
0
 /// <summary>
 /// Called when DataSource property changed
 /// </summary>
 /// <param name="oldValue"></param>
 /// <param name="newValue"></param>
 protected override void OnDataSourceChanged(System.Collections.IEnumerable oldValue, System.Collections.IEnumerable newValue)
 {
     Segment = null;
     base.OnDataSourceChanged(oldValue, newValue);
 }
예제 #2
0
        /// <summary>
        /// Creates the segments of StackingAreaSeries
        /// </summary>

        public override void CreateSegments()
        {
            ClearUnUsedAdornments(this.DataCount);
            List <double> xValues            = new List <double>();
            List <double> drawingListXValues = new List <double>();
            List <double> drawingListYValues = new List <double>();
            double        Origin             = ActualXAxis != null ? ActualXAxis.Origin : 0d;

            if (ActualXAxis != null && ActualXAxis.Origin == 0 && ActualYAxis is LogarithmicAxis &&
                (ActualYAxis as LogarithmicAxis).Minimum != null)
            {
                Origin = (double)(ActualYAxis as LogarithmicAxis).Minimum;
            }

            if (ActualXAxis is CategoryAxis && !(ActualXAxis as CategoryAxis).IsIndexed)
            {
                Adornments.Clear();
                xValues = GroupedXValuesIndexes;
            }
            else
            {
                xValues = GetXValues();
            }

            var stackingValues = GetCumulativeStackValues(this);

            if (stackingValues != null)
            {
                YRangeStartValues = stackingValues.StartValues;
                YRangeEndValues   = stackingValues.EndValues;

                if (YRangeStartValues != null)
                {
                    drawingListXValues.AddRange(xValues);
                    drawingListYValues.AddRange(YRangeStartValues);
                }
                else
                {
                    drawingListXValues.AddRange(xValues);
                    drawingListYValues = (from val in xValues select Origin).ToList();
                }

                drawingListXValues.AddRange((from val in xValues select val).Reverse().ToList());
                drawingListYValues.AddRange((from val in YRangeEndValues select val).Reverse().ToList());

                if (Segment == null || Segments.Count == 0)
                {
                    Segment = new StackingAreaSegment(drawingListXValues, drawingListYValues, this)
                    {
                        Series = this,
                        Item   = ActualData
                    };
                    Segment.SetData(drawingListXValues, drawingListYValues);
                    Segments.Add(Segment);
                }
                else
                {
                    Segment.Item = ActualData;
                    Segment.SetData(drawingListXValues, drawingListYValues);
                }

                if (ShowEmptyPoints)
                {
                    UpdateEmptyPointSegments(drawingListXValues, false);
                }

                if (AdornmentsInfo != null)
                {
                    AddStackingAreaAdornments(YRangeEndValues);
                }
            }
        }