paintOnCircle method

void paintOnCircle(
  1. Canvas canvas,
  2. Size size,
  3. Offset center,
  4. double radius, {
  5. PatternScaleBehavior patternScaleBehavior = PatternScaleBehavior.container,
  6. Rect? customRect,
})

Paint the Pattern on a Circle, defined by a center Offset and a radius.

If PatternScaleBehavior.customRect is specified, you must also provide a customRect to scale the Pattern to.

Implementation

void paintOnCircle(Canvas canvas, Size size, Offset center, double radius,
    {PatternScaleBehavior patternScaleBehavior =
        PatternScaleBehavior.container,
    Rect? customRect}) {
  canvas.save();
  final Rect rect =
      Rect.fromCircle(center: Offset(center.dx, center.dy), radius: radius);
  final Path circle = Path()..addOval(rect);
  canvas.clipPath(circle);
  switch (patternScaleBehavior) {
    case PatternScaleBehavior.container:
      paintWithPattern(canvas, rect.left, rect.top, rect.width, rect.height);
      break;
    case PatternScaleBehavior.canvas:
      paintOnCanvas(canvas, size);
      break;
    case PatternScaleBehavior.customRect:
      paintWithPattern(canvas, customRect!.left, customRect.top,
          customRect.width, customRect.height);
      break;
  }
  canvas.restore();
}