您选择的贝塞尔曲线不正确。
在这里我说明了我在哪里应用了哪些曲线。黄点是起点和终点黑点代表控制点.
在代码中,我从左到右(从上到下)并使用arcToPoint
代替conicTo
因为它效果更好。注意arcToPoint
也绘制圆锥曲线。
它只是一个粗略的草图,即比例完全关闭,但至少我可以分享正确的贝塞尔曲线您应该使用它来实现您想要的输出。
@override
void paint(Canvas canvas, Size size) {
final paint = Paint()
..color = Colors.red[800]
..style = PaintingStyle.fill;
final path = new Path()
..moveTo(size.width * .6, 0)
..quadraticBezierTo(
size.width * .7,
size.height * .08,
size.width * .9,
size.height * .05,
)
..arcToPoint(
Offset(
size.width * .93,
size.height * .15,
),
radius: Radius.circular(size.height * .05),
largeArc: true,
)
..cubicTo(
size.width * .6,
size.height * .15,
size.width * .5,
size.height * .46,
0,
size.height * .3,
)
..lineTo(0, 0)
..close();
canvas.drawPath(path, paint);
}
请注意,我更新了要使用的语法..
级联表示法和final
变量的关键字。