public void Dispose() { if (!isDisposed) { drawer = null; if (settings.HandleSizeChanged) { canvas.SizeChanged -= Canvas_SizeChanged; } canvas.MouseWheel -= Canvas_MouseWheel; canvas.MouseMove -= Canvas_MouseMove; canvas.MouseUp -= Canvas_MouseUp; canvas.MouseDown -= Canvas_MouseDown; canvas.Children.Clear(); if (xZoomEnabled) { horizScrollBar.ValueChanged -= HorizScrollBar_ValueChanged; } if (yZoomEnabled) { vertScrollBar.ValueChanged -= VertScrollBar_ValueChanged; } isDisposed = true; } }
/// <summary> /// Init method /// </summary> /// <param name="canvas">Canvas object</param> /// <param name="horizScrollBar">Horizontal ScrollBar object</param> /// <param name="vertScrollBar">Verical ScrollBar object. Can be null - that means vertical scroll is disabled</param> /// <param name="drawer">ICustomChartCanvasDrawer implementator. This object will implement actual chart drawing(lines, etc)</param> /// <param name="settings">WPFCanvasChartSettings instance - settings for chart</param> /// <param name="xAxisInterpolator">value interpolator for x axis</param> /// <param name="yAxisInterpolator">value interpolator for y axis</param> public void Init(Canvas canvas, IWPFCanvasChartDrawer drawer, WPFCanvasChartSettings settings, IWPFCanvasChartInterpolator xAxisInterpolator, IWPFCanvasChartInterpolator yAxisInterpolator) { this.canvas = canvas; this.drawer = drawer; this.settings = settings; this.yZoomEnabled = vertScrollBar != null; this.xZoomEnabled = horizScrollBar != null; this.xAxisInterpolator = xAxisInterpolator; this.yAxisInterpolator = yAxisInterpolator; chartHost.Drawing.Transform = chartTransform; canvas.Children.Add(axisHost); canvas.Children.Add(xyAxisValuesHost); canvas.Children.Add(chartHost); UpdateHostsSizes(); InitCanvasHandlers(); this.isDisposed = false; }