gpt4 book ai didi

android - 沿路径使用渐变

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:55:25 28 4
gpt4 key购买 nike

我正在尝试使用 Android Path 类创建“发光”效果。然而,梯度并没有被扭曲以适应路径。相反,它只是简单地显示在它的“上方”并剪裁到路径的笔划。使用方形路径,下图显示了我的意思:

Path-gradient fail

相反,它应该看起来更像这样:

enter image description here

换句话说,渐变遵循路径,特别是根据 CornerPathEffect 中设置的半径环绕拐角。

这是代码的相关部分:

paint = new Paint();
paint.setStyle(Style.STROKE);
paint.setStrokeWidth(20);
paint.setAntiAlias(true);
LinearGradient gradient = new LinearGradient(30, 0, 50, 0,
new int[] {0x00000000, 0xFF0000FF, 0x00000000}, null, Shader.TileMode.MIRROR);
paint.setShader(gradient);
PathEffect cornerEffect = new CornerPathEffect(10);
paint.setPathEffect(cornerEffect);
canvas.drawPath(boxPath, paint);

有什么想法吗?


另一种选择是在定义笔划宽度时获得“软边画笔”效果。我已经尝试过 BlurMaskFilters,但它们提供了统一的模糊效果,而不是从不透明到透明的过渡。有谁知道这是否可能?

最佳答案

用软刷位图绘制怎么样?使用图像编辑软件(如 Photoshop)制作一个不透明度向外径向递减的柔软圆形笔刷。另存为可绘制对象,将其加载到位图中并沿路径均匀分布绘制。用白色画笔制作位图。这样您就可以使用 PorterDuffColorFilter 将给定的颜色(此处为蓝色)简单地乘以您的位图。

brush1=BitmapFactory.decodeResource(getResources(), R.drawable.brush_custom_one);
//This contains radially decreasing opacity brush
porter_paint.setColorFilter(new PorterDuffColorFilter(paint.getColor(), Mode.MULTIPLY));
for (int i=1;i<matrix.size();i++) {
//matrix contains evenly spaced points along path
Point point = matrix.get(matrix.get(i));
canvas.drawBitmap(brush1, point.x,point.y, porter_paint);}

使用的画笔是(在那里):Brush used最后的结果是:Final result

关于android - 沿路径使用渐变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6468738/

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