【发布时间】:2012-12-19 18:34:01
【问题描述】:
我在 Android 中有一个动态生成的位图,我想从顶部边缘羽化,这样边界区域将在顶部完全透明,并逐渐变为稍微低于完全不透明。
创建一个完全透明的顶部边缘
transparentPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
transparentPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OUT));
Shader shader = new LinearGradient(0, 0, 0, 20,
Color.TRANSPARENT, Color.TRANSPARENT, Shader.TileMode.CLAMP);
transparentPaint.setShader(shader);
// the bitmap is dynamically generated beforehand
Canvas c = new Canvas(bitmap);
c.drawRect(0, 0, bitmapWidth, 20, transparentPaint);
Alpha 渐变而不是完全透明的孔?
你将如何实现这样的目标:
[在这种情况下只是顶部边缘]
【问题讨论】:
-
刚刚注意到你的线性渐变是完全透明的,它使用相同的颜色作为开始和结束
-
@Lumis 是的,这正是问题所在,我可以使用提供的代码创建一个完全透明的边缘,但不能创建如图所示的 alpha 渐变 - 怎么做?
-
你必须在顶部使用任何颜色,比如 Color.BLACK 然后尝试各种 xFermodes
标签: java android graphics bitmap gradient