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


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值