flutter - 如何在 flutter 中为自定义绘制的圆圈提供阴影

标签 flutter dart paint

我试图让一个圆圈看起来更物质。所以我想给它一个阴影,我如何在 flutter 中使用 Paint 类来做到这一点

thumbPaint = Paint()
..color = Colors.white,
..style = PaintingStyle.fill;

最佳答案

您可以使用 MaskFilter来创造阴影效果。在绘制真正的circleA之前,只需使用MaskFilter Paint绘制一个半径稍大的circleB,您就可以获得带有阴影效果的circleA。

看看这个 circle用下面的代码绘制。

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;
  }
}

关于flutter - 如何在 flutter 中为自定义绘制的圆圈提供阴影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56512979/

相关文章:

c# - 刷新一个控件

flutter - 2个容器之间的文字 flutter

json - 如何添加utf8解码器解决flutter http请求乱码问题?

flutter - 如何在 Flutter 中模糊小部件

dart - 如何创建继承父文档 CSS 的 Polymer Dart 组件?

angular - Dart 中的构建时值注入(inject)

java - 突破游戏(当我出局时,我希望球再次击中剩余的砖 block )

Flutter实现重复弹性动画

java - Flutter - 无法将 MethodChannel 与 Firebase onBackgroundMessage 一起使用

Java JComponent - 从左下角开始绘画?