【发布时间】:2023-03-06 22:21:01
【问题描述】:
根据original question,最终结果是ImageView 中的圆角矩形png,具有自然的阴影。
我有阴影工作,但是当它绘制时,它会使整个图像变黑。
添加阴影时如何防止原始图像(绝对不是黑色)变黑?
BlurMaskFilter blurFilter = new BlurMaskFilter(2, BlurMaskFilter.Blur.OUTER);
Paint shadowPaint = new Paint();
shadowPaint.setMaskFilter(blurFilter);
int[] offsetXY = new int[2];
Bitmap originalBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.pier_t);
Bitmap shadowImage = originalBitmap.extractAlpha(shadowPaint, offsetXY);
Canvas c = new Canvas(shadowImage);
c.drawBitmap(originalBitmap, -offsetXY[0], -offsetXY[1], null);
imageView.setImageBitmap(shadowImage);
更新:
我实施了 Josh 关于复制到正确色彩空间的建议,现在效果很好!对于未来的搜索者,此代码会在图像视图上生成投影。您可以使用 x 和 y 以及 OUTER 常量来获得所需的效果。
BlurMaskFilter blurFilter = new BlurMaskFilter(2, BlurMaskFilter.Blur.OUTER);
Paint shadowPaint = new Paint();
shadowPaint.setMaskFilter(blurFilter);
int[] offsetXY = new int[2];
Bitmap originalBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.pier_t);
Bitmap shadowImage = originalBitmap.extractAlpha(shadowPaint, offsetXY);
Bitmap shadowImage32 = shadowImage.copy(Bitmap.Config.ARGB_8888, true);
Canvas c = new Canvas(shadowImage32);
c.drawBitmap(originalBitmap, -offsetXY[0], -offsetXY[1], null);
imageView.setImageBitmap(shadowImage32);
【问题讨论】:
-
太棒了!我很高兴所有这些努力都得到了回报。
-
我要怎么做才能改变阴影的颜色?
标签: android paint blur shadow drawbitmap