如何解决图片中的阴影问题

问题描述

我想使用以下代码创建png位图格式的位图阴影。

当阴影位置为+30时,代码可以正常工作,但是在-30时我没有得到想要的结果。

我做了几次尝试但都失败了,我的问题是,当阴影位置为-30时,我应该怎么做才能使代码正常工作?

public Bitmap addShadow(final Bitmap bm,final int dstHeight,final int dstWidth,int color,int size,float dx,float dy) {
    final Bitmap mask = Bitmap.createBitmap(dstWidth,dstHeight,Config.ALPHA_8);

    final Matrix scaletoFit = new Matrix();
    final RectF src = new RectF(0,bm.getWidth(),bm.getHeight());
    final RectF dst = new RectF(0,dstWidth - dx,dstHeight - dy);
    scaletoFit.setRectToRect(src,dst,ScaletoFit.CENTER);

    final Matrix dropShadow = new Matrix(scaletoFit);
    dropShadow.postTranslate(dx,dy);

    final Canvas maskCanvas = new Canvas(mask);
    final Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
    maskCanvas.drawBitmap(bm,scaletoFit,paint);
    paint.setXfermode(new PorterDuffXfermode(Mode.SRC_OUT));
    maskCanvas.drawBitmap(bm,dropShadow,paint);

    final BlurMaskFilter filter = new BlurMaskFilter(size,Blur.norMAL);
    paint.reset();
    paint.setAntiAlias(true);
    paint.setColor(color);
    paint.setMaskFilter(filter);
    paint.setFilterBitmap(true);

    final Bitmap ret = Bitmap.createBitmap(dstWidth,Config.ARGB_8888);
    final Canvas retCanvas = new Canvas(ret);
    retCanvas.drawBitmap(mask,paint);
    retCanvas.drawBitmap(bm,null);
    mask.recycle();
    return ret;
}

使用以下代码链接到答案:click here and get the answer

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)