首页 > 解决方案 > 我可以在 Flutter 中使用 CustomPaint 中的 Canvas 绘制自定义框阴影吗?

问题描述

很清楚如何使用高程属性绘制阴影,但是如果我想让阴影居中怎么办?

标签: flutter

解决方案


找到了解决方案:

我可以简单地进入 BoxShadow 小部件的源代码,并将它们使用的路径属性应用于我自己的路径。

这是源代码。

这是我用来为自定义路径(而不是具有边框半径的圆形或矩形)创建阴影的代码,它允许我创建自定义阴影而不是使用高程预设。

    canvas.drawPath(
       Path()
          ..addRect(
              Rect.fromPoints(Offset(-15, -15), Offset(size.width+15, size.height+15)))
          ..addOval(
              Rect.fromPoints(Offset(0, 0), Offset(size.width, size.height)))
          ..fillType = PathFillType.evenOdd,
        Paint() 
        ..color= Colors.black.withAlpha(shadowAlpha)
        ..maskFilter = MaskFilter.blur(BlurStyle.normal, convertRadiusToSigma(3))
    );

    static double convertRadiusToSigma(double radius) {
        return radius * 0.57735 + 0.5;
    }

推荐阅读