public bool ZoomLimits(DiagramDataSeriesUnited currentSeriesUnited, Every groupInterval, int delta, ref DiagramDataExtremums extremums)
        {
            if (delta < 0)// increase picture
            {
                if (currentSeriesUnited.DiagramData.Count < 6)
                {
                    return(false);
                }
            }
            else
            {
            }

            int shiftDateRange = (extremums.MaxDate - extremums.MinDate).Days * delta / 1200;

            if (Math.Abs(shiftDateRange) < 31 && groupInterval == Every.Month)
            {
                shiftDateRange = 31 * Math.Sign(delta);
            }
            if (Math.Abs(shiftDateRange) < 366 && groupInterval == Every.Year)
            {
                shiftDateRange = 366 * Math.Sign(delta);
            }
            extremums.MinDate = extremums.MinDate.AddDays(-shiftDateRange);
            extremums.MaxDate = extremums.MaxDate.AddDays(shiftDateRange);
            return(true);
        }
        public bool MoveLimits(DiagramDataSeriesUnited etalonSeriesUnited, DiagramDrawingCalculator calculator, int horizontalPoints, int verticalPoints, ref DiagramDataExtremums extremums)
        {
            var delta = (int)Math.Round(Math.Abs(horizontalPoints / calculator.PointPerDay));

            if (horizontalPoints < 0) // двигаем влево
            {
                if (extremums.MaxDate == etalonSeriesUnited.DiagramData.Last().Key)
                {
                    return(false);
                }
                if ((etalonSeriesUnited.DiagramData.Last().Key - extremums.MaxDate).Days < delta)
                {
                    delta = (etalonSeriesUnited.DiagramData.Last().Key - extremums.MaxDate).Days;
                }
                extremums.MaxDate = extremums.MaxDate.AddDays(delta);
                extremums.MinDate = extremums.MinDate.AddDays(delta);
            }
            else // вправо
            {
                if (extremums.MinDate == etalonSeriesUnited.DiagramData.ElementAt(0).Key)
                {
                    return(false);
                }
                if ((extremums.MinDate - etalonSeriesUnited.DiagramData.ElementAt(0).Key).Days < delta)
                {
                    delta = (extremums.MinDate - etalonSeriesUnited.DiagramData.ElementAt(0).Key).Days;
                }
                extremums.MinDate = extremums.MinDate.AddDays(-delta);
                extremums.MaxDate = extremums.MaxDate.AddDays(-delta);
            }
            return(true);
        }
 public DiagramDataSeriesUnited(DiagramDataSeriesUnited other)
 {
     DiagramData     = new SortedList <DateTime, List <double> >(other.DiagramData);
     PositiveBrushes = new List <Brush>(other.PositiveBrushes);
     NegativeBrushes = new List <Brush>(other.NegativeBrushes);
     Names           = new List <string>(other.Names);
     SeriesCount     = other.SeriesCount;
 }
Exemplo n.º 4
0
        public DrawingImage Draw(DiagramDataSeriesUnited diagramData, DiagramDataExtremums diagramDataExtremums,
                                 DiagramDrawingCalculator diagramDrawingCalculator, DiagramMode diagramMode, Every groupInterval)
        {
            _diagramData = diagramData;
            _extremums   = diagramDataExtremums;
            _diagramDrawingCalculator = diagramDrawingCalculator;
            _diagramMode   = diagramMode;
            _groupInterval = groupInterval;

            var drawingGroup = new DrawingGroup();

            drawingGroup.Children.Add(FullDiagramBackground(_diagramDrawingCalculator));
            drawingGroup.Children.Add(DiagramRegionBackground(_diagramDrawingCalculator));

            drawingGroup.Children.Add(HorizontalAxes(_diagramDrawingCalculator));
            drawingGroup.Children.Add(VerticalGridLines(_diagramDrawingCalculator));

            drawingGroup.Children.Add(XAxisDashes(Dock.Top, _diagramDrawingCalculator));
            drawingGroup.Children.Add(XAxisDashes(Dock.Bottom, _diagramDrawingCalculator));
            drawingGroup.Children.Add(XAxisMarkers(Dock.Top, _diagramDrawingCalculator));
            drawingGroup.Children.Add(XAxisMarkers(Dock.Bottom, _diagramDrawingCalculator));

            drawingGroup.Children.Add(VerticalAxes(_diagramDrawingCalculator));

            drawingGroup.Children.Add(YAxisDashes(Dock.Left, _diagramDrawingCalculator));
            drawingGroup.Children.Add(YAxisMarkers(Dock.Left, _diagramDrawingCalculator));
            drawingGroup.Children.Add(YAxisDashes(Dock.Right, _diagramDrawingCalculator));
            drawingGroup.Children.Add(YAxisMarkers(Dock.Right, _diagramDrawingCalculator));

            drawingGroup.Children.Add(HorizontalGridLines(_diagramDrawingCalculator));

            if (_diagramMode == DiagramMode.BarVertical || _diagramMode == DiagramMode.BarVertical100)
            {
                BarVerticalDiagram(_diagramDrawingCalculator, ref drawingGroup);
            }
            if (_diagramMode == DiagramMode.Lines)
            {
                for (var j = 0; j < _diagramData.SeriesCount; j++)
                {
                    drawingGroup.Children.Add(OneSeriesLine(_diagramDrawingCalculator, j));
                }
            }
            if (_diagramMode == DiagramMode.SeparateLines)
            {
                drawingGroup.Children.Add(OneSeriesLine(_diagramDrawingCalculator, diagramData.ActiveLine));
            }

            return(new DrawingImage(drawingGroup));
        }