Exemple #1
0
        protected override void InitExample()
        {
            var xAxis = new NumericAxis(Activity)
            {
                AutoRange = AutoRange.Always
            };
            var leftAxis = new NumericAxis(Activity)
            {
                AxisAlignment = AxisAlignment.Left, AxisId = AxisAlignment.Left.Name()
            };
            var rightAxis = new NumericAxis(Activity)
            {
                AxisAlignment = AxisAlignment.Right, AxisId = AxisAlignment.Right.Name()
            };

            var selectedStrokeStyle = new SolidPenStyle(ColorUtil.White, 4f.ToDip(Activity));
            var selectedPointMarker = new EllipsePointMarker
            {
                Width       = 10.ToDip(Activity),
                Height      = 10.ToDip(Activity),
                FillStyle   = new SolidBrushStyle(0xFFFF00DC),
                StrokeStyle = new SolidPenStyle(ColorUtil.White, 1f.ToDip(Activity))
            };

            using (Surface.SuspendUpdates())
            {
                Surface.XAxes.Add(xAxis);
                Surface.YAxes.Add(leftAxis);
                Surface.YAxes.Add(rightAxis);

                var initialColor = Color.Blue;
                for (var i = 0; i < SeriesCount; i++)
                {
                    var alignment  = i % 2 == 0 ? AxisAlignment.Left : AxisAlignment.Right;
                    var dataSeries = GenerateDataSeries(alignment, i);

                    var rs = new FastLineRenderableSeries
                    {
                        DataSeries  = dataSeries,
                        YAxisId     = alignment.Name(),
                        StrokeStyle = new SolidPenStyle(initialColor, 2f.ToDip(Activity))
                    };

                    // Colors are incremented for visual purposes only
                    var newR = initialColor.R == 255 ? 255 : initialColor.R + 5;
                    var newB = initialColor.B == 0 ? 0 : initialColor.B - 2;
                    initialColor = Color.Argb(255, (byte)newR, initialColor.G, (byte)newB);

                    Surface.RenderableSeries.Add(rs);
                }

                Surface.ChartModifiers.Add(new SeriesSelectionModifier
                {
                    SelectedSeriesStyle = new SelectedSeriesStyle(selectedStrokeStyle, selectedPointMarker)
                });
            }
        }
        private void SetupAxes()
        {
            // Brushes and styles for the XAxis, vertical gridlines, vertical tick marks, vertical axis bands and xaxis labels
            var xAxisGridBandBrush      = new SolidBrushStyle(color: 0x55ff6655);
            var xAxisMajorGridLineBrush = new SolidPenStyle(color: Color.Green, thickness: 1);
            var xAxisMinorGridLineBrush = new SolidPenStyle(color: Color.Yellow, thickness: 0.5f, strokeDashArray: new float[] { 10, 3, 10, 3 }, antiAliasing: true);
            var xAxisMajorTickBrush     = new SolidPenStyle(color: Color.Green, thickness: 1);
            var xAxisMinorTickBrush     = new SolidPenStyle(color: Color.Yellow, thickness: 0.5f, strokeDashArray: new float[] { 10, 3, 10, 3 }, antiAliasing: true);
            var xAxisLabelColor         = Color.Purple;
            var xAxisFontName           = "Helvetica";
            var xAxisFontSize           = 14.0f;
            var xAxisDrawLabels         = true;
            var xAxisDrawMajorTicks     = true;
            var xAxisDrawMinorTicks     = true;
            var xAxisDrawMajorGridlines = true;
            var xAxisDrawMinorGridlines = true;

            // Create the XAxis
            var xAxis = new NumericAxis(Activity);

            xAxis.GrowBy       = new DoubleRange(min: 0.1, max: 0.1);
            xAxis.VisibleRange = new DoubleRange(min: 150, max: 180);

            // Apply styles to the XAxis (see above)
            xAxis.AxisBandsStyle      = xAxisGridBandBrush;
            xAxis.MajorGridLineStyle  = xAxisMajorGridLineBrush;
            xAxis.MinorGridLineStyle  = xAxisMinorGridLineBrush;
            xAxis.TickLabelStyle      = new FontStyle(Typeface.Create(xAxisFontName, TypefaceStyle.Normal), xAxisFontSize, Color.Black);
            xAxis.DrawMajorTicks      = xAxisDrawMajorTicks;
            xAxis.DrawMinorTicks      = xAxisDrawMinorTicks;
            xAxis.DrawMajorGridLines  = xAxisDrawMajorGridlines;
            xAxis.DrawMinorGridLines  = xAxisDrawMinorGridlines;
            xAxis.DrawLabels          = xAxisDrawLabels;
            xAxis.MajorTickLineLength = 5;
            xAxis.MajorTickLineStyle  = xAxisMajorTickBrush;
            xAxis.MinorTickLineLength = 2;
            xAxis.MinorTickLineStyle  = xAxisMinorTickBrush;

            // Brushes and styles for the Right YAxis, horizontal gridlines, horizontal tick marks, horizontal axis bands and right yaxis labels
            var yRightAxisMajorTickBrush     = new SolidPenStyle(color: Color.Purple, thickness: 1);
            var yRightAxisMinorTickBrush     = new SolidPenStyle(color: Color.Red, thickness: 0.5f);
            var yRightAxisMajorBandBrush     = new SolidBrushStyle(color: 0x55ff6655);
            var yRightAxisMajorGridLineBrush = new SolidPenStyle(color: Color.Green, thickness: 1);
            var yRightAxisMinorGridLineBrush = new SolidPenStyle(color: Color.Yellow, thickness: 0.5f, strokeDashArray: new float[] { 10, 3, 10, 3 }, antiAliasing: true);
            var yRightAxisLabelFormatter     = new ThousandsLabelProvider(); // see LabelProvider API documentation for more info
            var yRightAxisLabelColor         = Color.Green;
            var yRightAxisFontSize           = 12.0f;
            var yRightAxisDrawLabels         = true;
            var yRightAxisDrawMajorTicks     = true;
            var yRightAxisDrawMinorTicks     = true;
            var yRightAxisDrawMajorGridlines = true;
            var yRightAxisDrawMinorGridlines = true;

            // Create the Right YAxis
            var yRightAxis = new NumericAxis(Activity);

            yRightAxis.GrowBy        = new DoubleRange(min: 0.1, max: 0.1);
            yRightAxis.AxisAlignment = AxisAlignment.Right;
            yRightAxis.AutoRange     = AutoRange.Always;

            yRightAxis.AxisId = "PrimaryAxisId";

            // Apply styles to the Right YAxis (see above)
            yRightAxis.AxisBandsStyle      = yRightAxisMajorBandBrush;
            yRightAxis.MajorGridLineStyle  = yRightAxisMajorGridLineBrush;
            yRightAxis.MinorGridLineStyle  = yRightAxisMinorGridLineBrush;
            yRightAxis.LabelProvider       = yRightAxisLabelFormatter;
            yRightAxis.TickLabelStyle      = new FontStyle(Typeface.Create("Arial", TypefaceStyle.Normal), yRightAxisFontSize, yRightAxisLabelColor);
            yRightAxis.MajorTickLineLength = 3;
            yRightAxis.MajorTickLineStyle  = yRightAxisMajorTickBrush;
            yRightAxis.MinorTickLineLength = 2;
            yRightAxis.MinorTickLineStyle  = yRightAxisMinorTickBrush;
            yRightAxis.DrawMajorTicks      = yRightAxisDrawMajorTicks;
            yRightAxis.DrawMinorTicks      = yRightAxisDrawMinorTicks;
            yRightAxis.DrawMajorGridLines  = yRightAxisDrawMajorGridlines;
            yRightAxis.DrawMinorGridLines  = yRightAxisDrawMinorGridlines;
            yRightAxis.DrawLabels          = yRightAxisDrawLabels;

            // Brushes and styles for the Left YAxis, horizontal gridlines, horizontal tick marks, horizontal axis bands and left yaxis labels
            var yLeftAxisMajorTickBrush     = new SolidPenStyle(color: Color.Black, thickness: 1);
            var yLeftAxisMinorTickBrush     = new SolidPenStyle(color: Color.Black, thickness: 0.5f);
            var yLeftAxisLabelFormatter     = new BillionsLabelProvider(); // See LabelProvider API documentation
            var yLeftAxisLabelColor         = Color.DarkGray;
            var yLeftAxisFontSize           = 12.0f;
            var yLeftAxisDrawMajorBands     = false;
            var yLeftAxisDrawLabels         = true;
            var yLeftAxisDrawMajorTicks     = true;
            var yLeftAxisDrawMinorTicks     = true;
            var yLeftAxisDrawMajorGridlines = false;
            var yLeftAxisDrawMinorGridlines = false;


            // Create the left YAxis
            var yLeftAxis = new NumericAxis(Activity);

            yLeftAxis.GrowBy        = new DoubleRange(min: 0, max: 3);
            yLeftAxis.AxisAlignment = AxisAlignment.Left;
            yLeftAxis.AutoRange     = AutoRange.Always;
            yLeftAxis.AxisId        = "SecondaryAxisId";

            // Apply styles to the left YAxis (see above)
            yLeftAxis.DrawMajorBands      = yLeftAxisDrawMajorBands;
            yLeftAxis.DrawMajorGridLines  = yLeftAxisDrawMajorGridlines;
            yLeftAxis.DrawMinorGridLines  = yLeftAxisDrawMinorGridlines;
            yLeftAxis.DrawMajorTicks      = yLeftAxisDrawMajorTicks;
            yLeftAxis.DrawMinorTicks      = yLeftAxisDrawMinorTicks;
            yLeftAxis.DrawLabels          = yLeftAxisDrawLabels;
            yLeftAxis.LabelProvider       = yLeftAxisLabelFormatter;
            yRightAxis.TickLabelStyle     = new FontStyle(Typeface.Create("Arial", TypefaceStyle.Normal), yLeftAxisFontSize, yLeftAxisLabelColor);
            yLeftAxis.MajorTickLineLength = 3;
            yLeftAxis.MajorTickLineStyle  = yLeftAxisMajorTickBrush;
            yLeftAxis.MinorTickLineLength = 2;
            yLeftAxis.MinorTickLineStyle  = yLeftAxisMinorTickBrush;

            // Add the axes to the chart
            Surface.XAxes.Add(xAxis);
            Surface.YAxes.Add(yRightAxis);
            Surface.YAxes.Add(yLeftAxis);
        }
        protected override void InitExample()
        {
            var xAxis = new NumericAxis(Activity);
            var yAxis = new NumericAxis(Activity);

            var fourierSeries = DataManager.Instance.GetFourierSeries(1.0, 0.1, 5.0, 5.15);

            var dataSeries0 = new HlDataSeries <double, double>();
            var dataSeries1 = new HlDataSeries <double, double>();

            FillDataSeries(dataSeries0, fourierSeries, 1.0);
            FillDataSeries(dataSeries1, fourierSeries, 1.3);

            const uint color = 0xFFC6E6FF;

            var strokeStyle = new SolidPenStyle(0xFFC6E6FF, 1f.ToDip(Activity));

            var errorBars0 = new FastErrorBarsRenderableSeries()
            {
                DataSeries     = dataSeries0,
                StrokeStyle    = strokeStyle,
                ErrorDirection = ErrorDirection.Vertical,
                ErrorType      = ErrorType.Absolute
            };
            var lineSeries = new FastLineRenderableSeries
            {
                DataSeries  = dataSeries0,
                StrokeStyle = strokeStyle,
                PointMarker = new EllipsePointMarker()
                {
                    FillStyle = new SolidBrushStyle(color),
                    Width     = 5.ToDip(Activity),
                    Height    = 5.ToDip(Activity)
                }
            };

            var errorBars1 = new FastErrorBarsRenderableSeries()
            {
                DataSeries     = dataSeries1,
                StrokeStyle    = strokeStyle,
                ErrorDirection = ErrorDirection.Vertical,
                ErrorType      = ErrorType.Absolute
            };
            var scatterSeries = new XyScatterRenderableSeries()
            {
                DataSeries  = dataSeries1,
                PointMarker = new EllipsePointMarker()
                {
                    FillStyle   = new SolidBrushStyle(ColorUtil.Transparent),
                    StrokeStyle = strokeStyle,
                    Width       = 7.ToDip(Activity),
                    Height      = 7.ToDip(Activity)
                }
            };

            using (Surface.SuspendUpdates())
            {
                Surface.XAxes.Add(xAxis);
                Surface.YAxes.Add(yAxis);
                Surface.RenderableSeries = new RenderableSeriesCollection
                {
                    errorBars0,
                    lineSeries,
                    errorBars1,
                    scatterSeries
                };
                Surface.ChartModifiers = new ChartModifierCollection
                {
                    new ZoomPanModifier(),
                    new PinchZoomModifier(),
                    new ZoomExtentsModifier(),
                };

                new ScaleAnimatorBuilder(errorBars0)
                {
                    Interpolator = new OvershootInterpolator(), Duration = 1000, StartDelay = 600
                }.Start();
                new ScaleAnimatorBuilder(lineSeries)
                {
                    Interpolator = new OvershootInterpolator(), Duration = 1000, StartDelay = 600
                }.Start();
                new ScaleAnimatorBuilder(errorBars1)
                {
                    Interpolator = new OvershootInterpolator(), Duration = 1000, StartDelay = 600
                }.Start();
                new ScaleAnimatorBuilder(scatterSeries)
                {
                    Interpolator = new OvershootInterpolator(), Duration = 1000, StartDelay = 600
                }.Start();
            }
        }