gpt4 book ai didi

java - 使用 alpha 渐变将位图绘制到 Canvas

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

我想在 Canvas 上绘制一个 Bitmap,并应用(线性)alpha 渐变。重要的一点是我不想用任何其他颜色覆盖图像;背景(来自 View 后面的 View,我要将此 Canvas 绘制到)应该只是“闪耀”。为了说明,我的目标是这样的(棋盘图案代表 View 背后)

linear alpha gradient

有人会认为我可以做这样的事情:

Bitmap bitmap = ...;
Paint paint = new Paint();
paint.setShader(new LinearGradient(0, 0, 100, 0, FROM, TO, Shader.TileMode.CLAMP));
canvas.drawBitmap(bitmap, 0, 0, paint);

但是 LinearGradientFROMTO 参数在这里需要是颜色,而不是 alpha 值;所以我看不到具体说明,例如FROM 应该是完全透明的,TO 应该是完全不透明的(不应用任何颜色叠加层)。

最佳答案

使用 ComposeShader,像这样:

class V extends View {
Bitmap bitmap;
Paint paint = new Paint();

public V(Context context) {
super(context);
bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.chrome);
Shader shaderA = new LinearGradient(0, 0, bitmap.getWidth(), 0, 0xffffffff, 0x00ffffff, Shader.TileMode.CLAMP);
Shader shaderB = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
paint.setShader(new ComposeShader(shaderA, shaderB, PorterDuff.Mode.SRC_IN));
}

@Override
protected void onDraw(Canvas canvas) {
canvas.drawRect(0, 0, bitmap.getWidth(), bitmap.getHeight(), paint);
}
}

关于java - 使用 alpha 渐变将位图绘制到 Canvas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40382379/

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