public void Draw(PointF point1, PointF point2) { if (_bitmap == null) return; point1 = point1.Rescale(_width, _height); point2 = point2.Rescale(_width, _height); var dst = Math.Sqrt(Util.DistanceSqr(point1, point2)); var nSteps = (int) Math.Ceiling(dst/_drawPxDist); lock (_bitmap) { using (var g = Graphics.FromImage(_bitmap)) { g.CompositingMode = CompositingMode.SourceOver; //g.DrawLine(Pens.White, point1, point2); for (var step = 1; step < nSteps; step++) { var alpha = step/(float) (nSteps - 1); var p = point1.LerpTo(point2, alpha); g.DrawImage(_brushBitmap, p.X - _brushBitmap.Width * 0.5f, p.Y - _brushBitmap.Height * 0.5f); } } } }