flutter - 如何在 CustomPaint 中删除超出的形状?
问题描述
我试图像这样在一个矩形中画一个半圆。
但是在我的代码中,圆形超过了白色矩形到黑色背景上,就像这样
我应该对代码进行哪些更改才能获得像第一张图片一样的结果?
我的代码:-
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;
}
}
解决方案
看来您的圆圈是在您想要限制绘画的区域之外绘制的。
如果您只想在画布的指定部分进行绘画,则称为“剪辑”。
添加剪辑:
canvas.clipRect(Rect.fromLTWH(0, 0, size.width, size.height));
canvas.drawCircle(center1, 100, paint);
这样你的圆圈就不会画在给定大小之外。
推荐阅读
- dictionary - Kotlin:mutableMap 无法识别 put()
- google-chrome - Chrome 上的输入字段显示滚动条
- firebase - 如何显示其他用户的用户名?
- material-design - Android Material Themes 和 Styles 的完整文档,即参考
- javascript - 如何更改数组中对象的属性?
- woocommerce - 这是否可以更改 woocommerce 中的收据格式?
- python - 在 ubuntu 16.04 LTS 上使用 pip install 时出错
- python - 需要在数学中使用 entry.get()
- r - How to create variables with different names in for loop iterations in R?
- java - AspectJ 方面未在 Maven 项目中触发