我知道这不是最好的方法,但是我真的做不到。如何做这样的事情。我很迷恋几何。我试图用cubicTo做到这一点,但我没有得到这个效果:/。
有人可以帮助我吗?以下是我的代码的一部分。
var sw = size.width;
var sh = size.height;
var path = Path();
path.cubicTo(sw/2, 0, sw/4, 0, 2*sw/4, 2*sh/4);
path.cubicTo(2*sw/3, 2*sh/3, sw/3, 0, sw, 0);
path.cubicTo(0, 0, 0, 0, sw, 0);
path.lineTo(sw, sh);
path.lineTo(0, sh);
path.close();
答案 0 :(得分:3)
检查一下...
class Paintter extends CustomPainter{
@override
void paint(Canvas canvas, Size size) {
Paint paint = Paint()..color = Colors.orange;
var path = Path();
double factor = 100;
path.lineTo(0, size.height);
path.lineTo(size.width, size.height);
path.lineTo(size.width, 0);
path.lineTo(size.width - factor, 0);
path.quadraticBezierTo(size.width/2, size.height, factor, 0);
path.lineTo(0, 0);
canvas.drawPath(path, paint);
}
答案 1 :(得分:2)
Path@arcToPoint对于绘制圆/椭圆段非常有用。
例如,对于半径等于矩形的一半高度的圆:
final w = size.width;
final h = size.height;
final r = h / 2;
final path = Path();
path.moveTo(0, 0);
path.lineTo(w / 2 - r, 0);
path.arcToPoint(
Offset(w / 2 + r, 0),
radius: Radius.circular(r),
clockwise: false,
);
path.lineTo(w, 0);
path.lineTo(w, h);
path.lineTo(0, h);
path.close();