gpt4 book ai didi

flutter - 如何从 Canvas CustomPaint 删除/剪辑?

转载 作者:行者123 更新时间:2023-12-04 11:29:06 25 4
gpt4 key购买 nike

我已经尝试使用 Canvas.clipPath连同 GestureDetector就像 Canvas 上的橡皮擦,我使用 CustomPaint里面ContainerimageDecoration设置,所以我想也许还有另一种解决方法:使用 Canvas.drawPath沿设置

 final Paint _eraserPaint = Paint()
..color = Colors.transparent
..blendMode = BlendMode.clear
..strokeWidth = 8
..style = PaintingStyle.stroke
..isAntiAlias = true;

但它画黑线而不是删除

知道如何解决这个问题吗?

谢谢

最佳答案

关键是拨打saveLayer在绘制任何可能需要删除的内容之前。完成后(从而创建一个新图层供您使用),然后您可以使用任何 Color 进行绘制。填充或绘制 BlendMode.clear擦掉。最后,拨打 restore将新图层“合并”到其他现有图层中。
例如,让我们画一个红色方块并从中减去一个圆圈:

void paint(Canvas canvas, Size size) {
canvas.saveLayer(Rect.largest, Paint());
canvas.drawRect(Rect.fromLTWH(0, 0, 80, 80), Paint()..color = Colors.red);
canvas.drawCircle(Offset(40, 40), 40, Paint()..blendMode = BlendMode.clear);
canvas.restore();
}
示例结果:
A square with a circle cut in the middle

关于flutter - 如何从 Canvas CustomPaint 删除/剪辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59626727/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com