【发布时间】:2016-11-03 14:45:32
【问题描述】:
我想在Canvas 上绘制Bitmap,并应用(线性)alpha 渐变。重要的一点是我不想用任何其他颜色覆盖图像;背景(来自View 后面的Views,我将把这个Canvas 绘制到)应该只是“闪耀”。为了说明,我的目标是这样的(棋盘格图案代表后面的View)
有人会认为我可以这样做:
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);
但是LinearGradient 的FROM 和TO 参数需要是颜色,而不是alpha 值;所以我看不到指定的方法,例如FROM 应该是完全透明的,TO 应该是完全不透明的(不应用任何颜色覆盖)。
【问题讨论】:
-
@Cactus 我看到
LinearGradient期望color0(from) 和color1(to) 是一个 int。它是否允许 rbga 值的十进制表示,或者它只允许 rgb,或者它完全期待其他东西?文档不清楚这个 int 值是什么。 developer.android.com/reference/android/graphics/… -
@d.j.brown:这是一个 32 位 ARGB 值。
标签: java android canvas bitmap gradient