画布上的CustomPainter Path额外行

问题描述 投票:0回答:1

我正在使用CustomPainter,我需要画线

class ShapesPainter extends CustomPainter {
  @override
  void paint(Canvas canvas, Size size) {
    final Paint firstPaint = Paint();
    firstPaint.color = const Color.fromARGB(255, 236, 0, 140);

    final Path firstPath = Path();
    firstPath.lineTo(size.width, 0);
    firstPath.lineTo(0, size.height * 0.10);
    firstPath.close();
    canvas.drawShadow(firstPath, Colors.black87, 2.0, false);
    canvas.drawPath(firstPath, firstPaint);
 }
}

我需要在屏幕上留下边距,所以我在容器中使用保证金:

........
Container(
          color: Colors.white,
          margin:
              EdgeInsets.only(top: 60.0, bottom: 20.0, left: 15.0, right: 15.0),
          child: Container(
            child: CustomPaint(
              painter: ShapesPainter(),
              child: Container(
.......

我需要在我的自定义路径下画一个阴影,我在我的构建小部件中使用了anvas.drawShadow方法,但是左边还有一个小阴影,请看下面的图像我指出了一个错误,这里是指向箭头小影子:enter image description here

dart flutter flutter-layout
1个回答
0
投票

由于我找不到任何关于路径的canvas.drawShadow效果的解决方案,我只是在阴影路径上创建了另一个Path(),它解决了这个问题,但它是一种黑客攻击。

final Path firstPathb = Path();
firstPathHide.lineTo(size.width, 0);
firstPathHide.lineTo(-10.0, size.height * 0.10);
firstPathHide.close();
canvas.drawPath(firstPathHide, firstPaint);
© www.soinside.com 2019 - 2024. All rights reserved.