简介:
图片倒影的基本的思路:
1、 从源图片上面一部分截取下来作为倒影的素材
2、将源图片和倒影拼接成为一张完整的图片
3、在图片的倒影的部分绘制渐变的倒影的效果
源码:
public Bitmap createReflectionImg(Bitmap bitmap){
//倒影上下的分割线的长度
final int reflectionGap = 0;
int w=bitmap.getWidth();
int h=bitmap.getHeight();
Matrix matrix=new Matrix();
// 设置上下旋转
matrix.preScale(1,-1);
// 创建一个图片 截图了source img 的下方的 1/2的
Bitmap reflectionImage=Bitmap.createBitmap(bitmap,0,h/2,w,h/2,matrix,false);
// 创建一张倒影的基础图片 注意下面的图片的高 =h(原图的高)+h/2(倒影图片的高)
Bitmap bitmapWithReflection=Bitmap.createBitmap(w,(h+h/2), Bitmap.Config.ARGB_8888);
Canvas canvas=new Canvas(bitmapWithReflection);
canvas.drawBitmap(bitmap,0,0,null);
Paint defalutPaint=new Paint();
// canvas.drawRect(0,h,w,h+reflectionGap,defalutPaint);
// 绘制倒影图片
canvas.drawBitmap(reflectionImage,0,h+reflectionGap,null);
// 绘制倒影图片的渐变
Paint paint=new Paint();
LinearGradient shade=new LinearGradient(0,bitmap.getHeight(),0,bitmapWithReflection.getHeight()+reflectionGap,0x70ffffff,
0x00ffffff, Shader.TileMode.CLAMP);
paint.setShader(shade);
// 参考 http://lipeng88213.iteye.com/blog/1189452
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
canvas.drawRect(0,h,w,bitmapWithReflection.getHeight()+reflectionGap,paint);
return bitmapWithReflection;
}
倒影的效果图:
当我们注释掉 标志位1 的渐变的代码,效果图如下:
参考:
http://www.cnblogs.com/qsl568/archive/2012/03/16/2400383.html