如何删除CustomPaint中多余的形状?

Sha*_*az 4 flutter

我想像这样在颤振中在矩形中画一个半圆。

在此输入图像描述

但在我的代码中,圆圈超出了黑色背景上的白色矩形,如下所示

在此输入图像描述

我应该对代码进行哪些更改才能获得像第一张图片一样的结果?

我的代码:-

import 'package:flutter/material.dart';

class Test extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: SafeArea(
          child: Scaffold(  
            backgroundColor: Colors.black,
            body: Center(  
              child: Container(  
                height: 200,
                width: 200,

                color: Colors.white,
                child: CustomPaint(
                  painter: Circ(),
                    child: Column(  
                    children: <Widget>[

                    ],
                  ),
                ),
              
              ),
            ),
          )
    ),
    );
  }
}

class Circ extends CustomPainter{
  
  @override 
  void paint(Canvas canvas, Size size) {
    final paint = Paint();
    
    
    
    paint.color = Colors.blue.withOpacity(0.2);
    
    var center1 = Offset(200,100);
    
    canvas.drawCircle(center1,100, paint); 

    
  }

    @override
  bool shouldRepaint(CustomPainter oldDelegate) {
    
    return null;
  }
}


Run Code Online (Sandbox Code Playgroud)

nvo*_*igt 5

看起来你的圆圈是在你想要限制绘画的区域之外绘制的。

如果您只想在画布的指定部分进行绘画,则称为“裁剪”。

添加剪辑:

canvas.clipRect(Rect.fromLTWH(0, 0, size.width, size.height));

canvas.drawCircle(center1, 100, paint); 
Run Code Online (Sandbox Code Playgroud)

这样你的圆就不会被画到给定的尺寸之外。