protected void DrawFreehand(Graphics g, Color borderColor, int borderSize, Point[] points) { if (points.Length > 0 && borderSize > 0 && borderColor.A > 0) { g.SmoothingMode = SmoothingMode.HighQuality; if (points.Length == 1) { using (Brush brush = new SolidBrush(borderColor)) { Rectangle rect = new Rectangle((int)(points[0].X - borderSize / 2f), (int)(points[0].Y - borderSize / 2f), borderSize, borderSize); g.FillEllipse(brush, rect); } } else { using (Pen pen = new Pen(borderColor, borderSize) { StartCap = LineCap.Round, EndCap = LineCap.Round, LineJoin = LineJoin.Round }) { g.DrawLines(pen, points.ToArray()); } } g.SmoothingMode = SmoothingMode.None; } }