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