Flutter 如何在使用CustomPainter drawPath创建的形状内填充颜色?
因此,我使用CustomPainter中的drawPath和drawArc创建了一个形状,绘制样式是stroke,但当我将其更改为fill时,它只填充圆弧,而不是整个形状。 我想用颜色填充我创建的形状,那么如何用特定的颜色填充形状呢Flutter 如何在使用CustomPainter drawPath创建的形状内填充颜色?,flutter,flutter-layout,Flutter,Flutter Layout,因此,我使用CustomPainter中的drawPath和drawArc创建了一个形状,绘制样式是stroke,但当我将其更改为fill时,它只填充圆弧,而不是整个形状。 我想用颜色填充我创建的形状,那么如何用特定的颜色填充形状呢 class CustomShapeCard extends CustomPainter { CustomShapeCard({@required this.strokeWidth, @required this.color}); final double
class CustomShapeCard extends CustomPainter {
CustomShapeCard({@required this.strokeWidth, @required this.color});
final double strokeWidth;
final Color color;
@override
void paint(Canvas canvas, Size size) {
var paint = Paint()
..style = PaintingStyle.stroke
..strokeWidth = strokeWidth
..color = color;
var path = Path();
path.moveTo(size.width * 0.1, size.height * 0.2);
path.lineTo(size.width * 0.1, size.height * 0.9);
canvas.drawPath(path, paint);
canvas.drawArc(
Rect.fromCenter(
center: Offset((size.width * 0.2) - 14, size.height * 0.9),
height: 50,
width: 50,
),
math.pi / 2,
math.pi / 2,
false,
paint,
);
path.moveTo((size.width * 0.2) - 14, (size.height * 0.9) + 25);
path.lineTo((size.width * 0.9) - 25, size.height * 0.9 + 25);
canvas.drawPath(path, paint);
canvas.drawArc(
Rect.fromCenter(
center: Offset((size.width * 0.9) - 25, size.height * 0.9),
height: 50,
width: 50,
),
math.pi / 2,
-math.pi / 2,
false,
paint,
);
path.moveTo((size.width * 0.9), (size.height * 0.9));
path.lineTo(size.width * 0.9, size.height * 0.35);
canvas.drawPath(path, paint);
canvas.drawArc(
Rect.fromCenter(
center: Offset((size.width * 0.9) - 25, size.height * 0.35),
height: 50,
width: 50,
),
-math.pi / 2,
math.pi / 2,
false,
paint,
);
path.moveTo((size.width * 0.9) - 25, (size.height * 0.35) - 25);
path.lineTo(size.width * 0.25, (size.height * 0.35) - 25);
canvas.drawPath(path, paint);
canvas.drawArc(
Rect.fromCenter(
center: Offset((size.width * 0.25), (size.height * 0.35) - 50),
height: 50,
width: 50,
),
math.pi / 2,
math.pi / 3,
false,
paint,
);
path.moveTo((size.width * 0.25) - 20, (size.height * 0.35) - 35);
path.lineTo(size.width * 0.1, size.height * 0.2);
canvas.drawPath(path, paint);
}
@override
bool shouldRepaint(CustomPainter oldDelegate) {
return false;
}
}
当绘画风格是笔划时,我得到这个
当我改变绘画风格来填充时
您不需要绘制所有的直线和圆弧,请参阅了解更多信息我目前正在尝试,因此没有更新,我打算在尝试完成后回复我使用ClipPath获得的,我没有使用ShapeOrder获得它,尽管您不需要绘制所有的直线和圆弧,请参阅了解更多信息我目前正在尝试,所以没有更新,我打算在尝试完成后回复我使用ClipPath得到的,但是我没有使用ShapeOrder得到它