Пример #1
0
        /// <summary>
        /// Generates the datas.
        /// </summary>
        public override void GenerateDatas()
        {
            AreaPoints.Clear();
            if (!IsPointsGenerated)
                Parts.Clear();
            Point endPoint;
            Point startPoint=new Point(0,0);
            int index = 0;
            if (this.Points != null && this.SeriesContainer != null && this.Points.Count > 1)
            {
                CalculateMinAndMax();
                ChartPoint oldPoint = new ChartPoint() { XValue = double.MinValue, YValue = double.MinValue };
                IntializePoints();
                AreaPoints.Add(startPoint);
                foreach (ChartPoint point in this.Points)
                {
                    if (CheckValuePoint(oldPoint,point))
                    {
                        Point linePoint = NormalizePoint(new Point(point.XValue, point.YValue));
                        if (index == 0)
                            linePoint.X = linePoint.X - this.StrokeThickness;
                        AreaPoints.Add(linePoint);
                    }
                }
                if (this.RenderingMode == RenderingMode.Default)
                {
                    if (!IsPointsGenerated)
                    {
                        for (int i = 0; i < AreaPoints.Count - 2; i++)
                        {
                            startPoint = NormalizePoint(new Point(this.Points[i].XValue, YMin));
                            endPoint = NormalizePoint(new Point(this.Points[i + 1].XValue, YMin));
                            AreaPart areaPart = new AreaPart(AreaPoints[i + 1], startPoint, endPoint, AreaPoints[i + 2]);
                            SetBindingForStrokeandStrokeThickness(areaPart);
                            this.Parts.Add(areaPart);

                        }
                        IsPointsGenerated = true;
                    }
                    else
                    {
                        int i = 0;
                        foreach (AreaPart part in this.Parts)
                        {
                            startPoint = NormalizePoint(new Point(this.Points[i].XValue, YMin));
                            endPoint = NormalizePoint(new Point(this.Points[i + 1].XValue, YMin));
                            part.StartPoint = AreaPoints[i + 1];
                            part.AreaStartPoint = startPoint;
                            part.AreaEndPoint = endPoint;
                            part.EndPoint = AreaPoints[i + 2];
                            part.Refresh();
                            i++;
                        }
                    }
                }
                endPoint = NormalizePoint(new Point(this.Points[this.Points.Count - 1].XValue, YMin));
                startPoint = NormalizePoint(new Point(this.Points[0].XValue, YMin));
                startPoint.X = startPoint.X - this.StrokeThickness;
                if (AreaPoints.Count > 0)
                {
                    AreaPoints[0] = startPoint;
                    AreaPoints.Add(endPoint);
                }
            }
            else
            {
                Parts.Clear();
            }

            if (this.SeriesContainer != null)
                this.SeriesContainer.Invalidate();
            IsRefreshed = false;
        }
Пример #2
0
        /// <summary>
        /// Generates the datas.
        /// </summary>
        override public void GenerateDatas()
        {
            AreaPoints.Clear();
            if (!IsPointsGenerated)
            {
                Parts.Clear();
            }
            Point endPoint;
            Point startPoint = new Point(0, 0);
            int   index      = 0;

            if (this.Points != null && this.SeriesContainer != null && this.Points.Count > 1)
            {
                CalculateMinAndMax();
                ChartPoint oldPoint = new ChartPoint()
                {
                    XValue = double.MinValue, YValue = double.MinValue
                };
                IntializePoints();
                AreaPoints.Add(startPoint);
                foreach (ChartPoint point in this.Points)
                {
                    if (CheckValuePoint(oldPoint, point))
                    {
                        Point linePoint = NormalizePoint(new Point(point.XValue, point.YValue));
                        if (index == 0)
                        {
                            linePoint.X = linePoint.X - this.StrokeThickness;
                        }
                        AreaPoints.Add(linePoint);
                    }
                }
                if (this.RenderingMode == RenderingMode.Default)
                {
                    if (!IsPointsGenerated)
                    {
                        for (int i = 0; i < AreaPoints.Count - 2; i++)
                        {
                            startPoint = NormalizePoint(new Point(this.Points[i].XValue, YMin));
                            endPoint   = NormalizePoint(new Point(this.Points[i + 1].XValue, YMin));
                            AreaPart areaPart = new AreaPart(AreaPoints[i + 1], startPoint, endPoint, AreaPoints[i + 2]);
                            SetBindingForStrokeandStrokeThickness(areaPart);
                            this.Parts.Add(areaPart);
                        }
                        IsPointsGenerated = true;
                    }
                    else
                    {
                        int i = 0;
                        foreach (AreaPart part in this.Parts)
                        {
                            startPoint          = NormalizePoint(new Point(this.Points[i].XValue, YMin));
                            endPoint            = NormalizePoint(new Point(this.Points[i + 1].XValue, YMin));
                            part.StartPoint     = AreaPoints[i + 1];
                            part.AreaStartPoint = startPoint;
                            part.AreaEndPoint   = endPoint;
                            part.EndPoint       = AreaPoints[i + 2];
                            part.Refresh();
                            i++;
                        }
                    }
                }
                endPoint     = NormalizePoint(new Point(this.Points[this.Points.Count - 1].XValue, YMin));
                startPoint   = NormalizePoint(new Point(this.Points[0].XValue, YMin));
                startPoint.X = startPoint.X - this.StrokeThickness;
                if (AreaPoints.Count > 0)
                {
                    AreaPoints[0] = startPoint;
                    AreaPoints.Add(endPoint);
                }
            }
            else
            {
                Parts.Clear();
            }

            if (this.SeriesContainer != null)
            {
                this.SeriesContainer.Invalidate();
            }
            IsRefreshed = false;
        }