private void DrawAllData(IDataDrawState state, IDrawing drawing, IMargin margin, Size canvasSize, System.Drawing.RectangleF clip) { var startX = this.scaleService.State.X1; var endX = this.scaleService.State.X2; if (this.dataService.ItemCount == 1) { // Draw point for single data item foreach (var item in this.dataService.GetItems(startX, endX)) { if (item != null && this.scaleService.IsItemVisible(item)) { var x = this.scaleService.ToScreen(Axis.X, item.X); var y = this.scaleService.ToScreen(Axis.Y, item.Y); drawing.Circle(state.LineColor, margin.Left + x, canvasSize.Height - margin.Bottom - y, 4, clip); } } } else { IDataItem prevItem = null; // Draw lines foreach (var item in this.dataService.GetItems(startX, endX)) { if (item != null && prevItem != null && (this.scaleService.IsItemVisible(prevItem) || this.scaleService.IsItemVisible(item))) { var x1 = this.scaleService.ToScreen(Axis.X, prevItem.X); var y1 = this.scaleService.ToScreen(Axis.Y, prevItem.Y); var x2 = this.scaleService.ToScreen(Axis.X, item.X); var y2 = this.scaleService.ToScreen(Axis.Y, item.Y); drawing.Line(state.LineColor, margin.Left + x1, canvasSize.Height - margin.Bottom - y1, margin.Left + x2, canvasSize.Height - margin.Bottom - y2, clip); } prevItem = item; } } }