【发布时间】:2012-08-28 01:39:29
【问题描述】:
如何在图像上应用 Alpha 渐变,使其线性淡化? 现在,我正在创建单位宽度的矩形,并使用它来绘制位图,其中包含一个在循环中更改 alpha 值的绘制对象。我只是这样做,因为我想不出其他任何事情。所以更整洁的方式会更好。
Bitmap bitmap = BitmapFactory.decodeStream(is);
Bitmap bmp = Bitmap.createScaledBitmap(bitmap, 100, 151, true));
bitmap.recycle();
Rect Rect1 = new Rect(0, 0, 100, 100);
Rect Rect2 = new Rect(100, 0, 101, 100);
Paint paint = new Paint();
canvas.drawBitmap(bmp, Rect1, Rect1, null);
while (paint.getAlpha() != 0) {
paint.setAlpha(paint.getAlpha() - 5);
canvas.drawBitmap(bmp, Rect2, Rect2, paint);
Rect2.set(Rect2.left + 1, Rect2.top, Rect2.right + 1, Rect2.bottom);
}
类似的东西
附:我正在尝试为动态壁纸执行此操作。
【问题讨论】:
-
你试过 GradientDrawable 了吗?或许可以用透明的方式把它放在上面……
-
@sandrstar 我想对图像应用渐变,以便它后面的任何东西都可见。我认为您的意思是我可以使用 GradientDrawable 在图像上添加颜色渐变?
-
这可以用 opengl 完成,但我怀疑你想走那条路。
-
另一种方法是,如果您可以获得位图的宽度和高度,您可以通过您在循环中指定的任何内容来编辑每一行像素的 alpha 值。这个我觉得是最直接的方式。
-
@TimeManx 对。至少你可以试试。或者,您可以查看 GradientDrawable 资源,了解可能的实施思路。
标签: android android-canvas live-wallpaper