问题描述
我想使用以下代码创建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 (将#修改为@)