Android 如何绘制尾部渐变为透明的路径
我正在创建一个简单的Android应用程序,其中有粒子在屏幕上移动 这些粒子当前使用已应用LinearGradient着色器的绘制。这允许粒子沿路径很好地淡入透明状态,如下图所示 着色器如下所示Android 如何绘制尾部渐变为透明的路径,android,kotlin,android-canvas,android-paint,Android,Kotlin,Android Canvas,Android Paint,我正在创建一个简单的Android应用程序,其中有粒子在屏幕上移动 这些粒子当前使用已应用LinearGradient着色器的绘制。这允许粒子沿路径很好地淡入透明状态,如下图所示 着色器如下所示 trailPaint.shader = LinearGradient( trail[size - 1].x, trail[size - 1].y, trail[0].x, t
trailPaint.shader = LinearGradient(
trail[size - 1].x,
trail[size - 1].y,
trail[0].x,
trail[0].y,
trailPaint.color,
Color.TRANSPARENT,
Shader.TileMode.MIRROR
)
canvas.drawPath(trailPath, trailPaint)
这里的问题是着色器的边界基于路径中最前面和最后面的点的位置,因此当粒子重新启用自身时,着色器不再覆盖路径的中间。这里可以看到这种情况的一个例子:
我也试着用越来越透明的圆圈画出路径上的每一点,但这些圆圈并没有给出一条同样令人不快的连续路径
我还有哪些其他选项可以提供与第一张图片类似的结果,而不会出现反弹问题?如果像我这样的人在解决这个问题时遇到困难,我会提供一个解决方案。谢谢亚历克斯为我们引路。我拿了你贴的东西,把这条路当作一系列直线,然后画出每一条,每一条都有自己的直线半径,根据它的长度和在总长度中的位置来计算。这是有效的,因为LinearGradient是线性的,所以它适用于直线。如果像我这样的人在解决这个问题时遇到困难,我会提供一个解决方案。谢谢亚历克斯为我们引路。我拿了你贴的东西,把这条路当作一系列直线,然后画出每一条,每一条都有自己的直线半径,根据它的长度和在总长度中的位置来计算。这是因为LinearGradient是线性的,所以它适用于直线
trailPaint.shader = LinearGradient(
point.x,
point.y,
trail[index + 1].x,
trail[index + 1].y,
ColorUtils.blendARGB(colour, Color.TRANSPARENT, (1 - (index.toFloat() / size))),
ColorUtils.blendARGB(colour, Color.TRANSPARENT, (1 - ((index.toFloat() + 1) / size))),
Shader.TileMode.CLAMP
)
canvas.drawCircle(point.x, point.y, trailPaint.strokeWidth / 2, trailPaint)