我正在尝试让一个圆看起来更加立体。因此,我想给它一个阴影,使用Flutter中的Paint类该如何实现呢?
thumbPaint = Paint()
..color = Colors.white,
..style = PaintingStyle.fill;
查看以下代码绘制的圆形。
class Painter extends CustomPainter {
@override
void paint(Canvas canvas, Size size) {
double radius = 100.0;
canvas.translate(size.width/2, size.height/2);
Offset center = Offset(0.0, 0.0);
// draw shadow first
Path oval = Path()
..addOval(Rect.fromCircle(center: center, radius: radius+10));
Paint shadowPaint = Paint()
..color = Colors.black.withOpacity(0.3)
..maskFilter = MaskFilter.blur(BlurStyle.normal, 50);
canvas.drawPath(oval, shadowPaint);
// draw circle
Paint thumbPaint = Paint()
..color = Colors.white
..style = PaintingStyle.fill;
canvas.drawCircle(center, radius, thumbPaint);
}
@override
bool shouldRepaint(Painter oldDelegate) {
return false;
}
}
@override
void paint(Canvas canvas, Size size) {
var path = Path();
var myPaint = Paint();
var center = Offset(size.width / 2, size.height / 2);
myPaint.color = Color(0xff007AFF);
path.addOval(Rect.fromCircle(center: center, radius: 50.0));
canvas.drawShadow(path, Color(0xff000000), 3, true);
canvas.drawPath(path, myPaint);
}
结果:
将其包装在BoxDecoration中。它具有BoxShadow属性。
您可以按照此链接进行操作。
new Container(
decoration: new BoxDecoration(
color: Colors.white,
border: new Border.all(
color: Colors.green,
width: 5.0,
style: BorderStyle.solid
),
borderRadius: new BorderRadius.only(
topLeft: new Radius.elliptical(40.0, 10.0),
bottomLeft: new Radius.circular(20.0),
),
boxShadow: [
new BoxShadow(
color: Colors.red,
offset: new Offset(20.0, 10.0),
)
],
image: new DecorationImage(
image: new AssetImage('assets/images/JL-Logo-150.png'),
)
Canvas#drawShadow()
方法。 - pskinkcanvas.drawCircle().drawShadow();
?我怎么获取路径? - UViccanvas.drawShadow(...)
- pskink