android 圖片的倒影

簡介:

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


發佈了120 篇原創文章 · 獲贊 1 · 訪問量 27萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章