protected override void DrawPath(SeriesBase series, Brush brush, double strokeThickness) { if (series is LineSeries || series is HiLoSeries) { PartsCollection partsCollection = new PartsCollection(); if (series is LineSeries) { LineSeries lineSeries = series as LineSeries; partsCollection = lineSeries.Parts; } else if (series is HiLoSeries) { HiLoSeries lineSeries = series as HiLoSeries; partsCollection = lineSeries.Parts; } if (RenderingMode == RenderingMode.Default) { for (int i = 0; i < partsCollection.Count; i++) { UIElement element = partsCollection[i].CreatePart(); if (element != null) { PartsCanvas.Children.Add(element); } } } } }
private void OnComboBoxSelectionChanged(object sender, SelectionChangedEventArgs e) { ComboBox comboBox = sender as ComboBox; if (comboBox.SelectedIndex == 1 && financialChart != null) { HiLoSeries hiLoSeries = new HiLoSeries(); hiLoSeries.XBindingPath = "Date"; hiLoSeries.High = "High"; hiLoSeries.Low = "Low"; hiLoSeries.ItemsSource = hiLowChart.StockPriceDetails; hiLoSeries.VisibilityOnLegend = Visibility.Collapsed; financialChart.PrimaryAxis.ZoomFactor = 1; financialChart.PrimaryAxis.PlotOffset = 10; financialChart.SecondaryAxis.ZoomFactor = 1; financialChart.Series.Clear(); financialChart.Series.Add(hiLoSeries); } else if (comboBox.SelectedIndex == 0 && financialChart != null) { HiLoOpenCloseSeries hiLoOpenClose = new HiLoOpenCloseSeries(); hiLoOpenClose.XBindingPath = "Date"; hiLoOpenClose.High = "High"; hiLoOpenClose.Low = "Low"; hiLoOpenClose.Open = "Open"; hiLoOpenClose.Close = "Close"; hiLoOpenClose.ItemsSource = hiLowChart.StockPriceDetails; hiLoOpenClose.VisibilityOnLegend = Visibility.Collapsed; financialChart.Series.Clear(); financialChart.PrimaryAxis.ZoomFactor = 1; financialChart.SecondaryAxis.ZoomFactor = 1; financialChart.Series.Add(hiLoOpenClose); } else if (comboBox.SelectedIndex == 2 && financialChart != null) { CandleSeries chartSeries = new CandleSeries(); chartSeries.XBindingPath = "Date"; chartSeries.High = "High"; chartSeries.Low = "Low"; chartSeries.Open = "Open"; chartSeries.Close = "Close"; chartSeries.ItemsSource = hiLowChart.StockPriceDetails; chartSeries.BearFillColor = new SolidColorBrush(Colors.Red); chartSeries.BullFillColor = new SolidColorBrush(Colors.Green); chartSeries.VisibilityOnLegend = Visibility.Collapsed; financialChart.Series.Clear(); financialChart.PrimaryAxis.ZoomFactor = 1; financialChart.SecondaryAxis.ZoomFactor = 1; financialChart.Series.Add(chartSeries); } }
override protected void DrawPath(SeriesBase series, System.Drawing.Pen pen) { if (series is LineSeries || series is HiLoSeries || series is HiLoOpenCloseSeries) { var points = new PointCollection(); var lowPoints = new PointCollection(); var pointCount = 0; PartsCollection partsCollection = new PartsCollection(); if (series is LineSeries) { LineSeries lineSeries = series as LineSeries; points = lineSeries.LinePoints; pointCount = lineSeries.LinePoints.Count; partsCollection = lineSeries.Parts; } else if (series is HiLoSeries) { HiLoSeries lineSeries = series as HiLoSeries; points = lineSeries.HighPoints; lowPoints = lineSeries.LowPoints; pointCount = lineSeries.HighPoints.Count; partsCollection = lineSeries.Parts; } else if (series is HiLoOpenCloseSeries) { HiLoOpenCloseSeries lineSeries = series as HiLoOpenCloseSeries; points = lineSeries.HighPoints; lowPoints = lineSeries.LowPoints; pointCount = lineSeries.HighPoints.Count; partsCollection = lineSeries.Parts; } if (RenderingMode == RenderingMode.Default) { for (int i = 0; i < partsCollection.Count; i++) { UIElement renderElement = partsCollection[i].CreatePart(); if (renderElement != null && !PartsCanvas.Children.Contains(renderElement)) { PartsCanvas.Children.Add(renderElement); } } } else { if (series is LineSeries) { for (int i = 0; i < pointCount - 1; i++) { switch (RenderingMode) { case RenderingMode.GDIRendering: GDIGraphics.DrawLine(pen, points[i].AsDrawingPointF(), points[i + 1].AsDrawingPointF()); break; case RenderingMode.Default: break; case RenderingMode.WritableBitmap: this.WritableBitmap.Lock(); WritableBitmapGraphics.DrawLine(pen, points[i].AsDrawingPointF(), points[i + 1].AsDrawingPointF()); this.WritableBitmap.Unlock(); break; default: break; } } } else { for (int i = 0; i < pointCount; i++) { switch (RenderingMode) { case RenderingMode.GDIRendering: GDIGraphics.DrawLine(pen, points[i].AsDrawingPointF(), lowPoints[i].AsDrawingPointF()); break; case RenderingMode.Default: break; case RenderingMode.WritableBitmap: this.WritableBitmap.Lock(); WritableBitmapGraphics.DrawLine(pen, points[i].AsDrawingPointF(), lowPoints[i].AsDrawingPointF()); this.WritableBitmap.Unlock(); break; default: break; } } } this.Collection.InvalidateBitmap(); } } }