簡介:
圖片倒影的基本的思路:
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