canvas 上的 CustomPainter Path 额外行
CustomPainter Path extra line on canvas
我在需要画线的地方使用 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 方法,但是左边也有一点阴影,请看下图我指出了一个错误,这里是指向小阴影的箭头:
由于我找不到解决 canvas.drawShadow
对 Path 的影响的任何解决方案,我只是在阴影路径之上创建了另一个 Path() ,它解决了这个问题,但它有点像 hack。
final Path firstPathb = Path();
firstPathHide.lineTo(size.width, 0);
firstPathHide.lineTo(-10.0, size.height * 0.10);
firstPathHide.close();
canvas.drawPath(firstPathHide, firstPaint);
我在需要画线的地方使用 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 方法,但是左边也有一点阴影,请看下图我指出了一个错误,这里是指向小阴影的箭头:
由于我找不到解决 canvas.drawShadow
对 Path 的影响的任何解决方案,我只是在阴影路径之上创建了另一个 Path() ,它解决了这个问题,但它有点像 hack。
final Path firstPathb = Path();
firstPathHide.lineTo(size.width, 0);
firstPathHide.lineTo(-10.0, size.height * 0.10);
firstPathHide.close();
canvas.drawPath(firstPathHide, firstPaint);