void Draw(PaintingRecord record, int startIndex, int endIndex, Graphics graphics, Pen pen) { GraphicsPath graphicsPath = new GraphicsPath(); PointF? start = null; for (int i = startIndex; i <= endIndex; i++) { var command = record[i]; if (i >= 1) { var ls = record[i - 1]; if (ls.Type != CommandType.DrawOpEnd) { start = new PointF(Math.Abs(ls.Coord.X), Math.Abs(ls.Coord.Y)); } else { graphicsPath.StartFigure(); start = null; } } PointF point = new PointF(Math.Abs(command.Coord.X), Math.Abs(command.Coord.Y)); if (start != null) { graphicsPath.AddLine(start.Value, point); } else { } } graphics.DrawPath(pen, graphicsPath); }
void DoDraw(PaintingRecord record, int startIndex, int endIndex, Graphics graphics, Pen pen) { Action action = () => { Draw(record, startIndex, endIndex, graphics, pen); }; this.BeginInvoke(action); }