android 常用图片处理效果总结

本文介绍如何利用Android Canvas的Xfermode实现图片的圆角效果,并通过Matrix和Shader实现镜面与倒影效果。具体包括使用PorterDuff.Mode.SRC_IN制作圆角图片的方法及设置渐变效果来模拟倒影的技术细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.Xfermode的简单使用

1.第一次用canvas绘制的为Dst层 第二次为Src

图片圆角效果:
效果图

private void innitView() {
         bmp = BitmapFactory.decodeResource(getResources(), R.drawable.test2);
         out = Bitmap.createBitmap(bmp.getWidth(),
                 bmp.getHeight(),
                 Config.ARGB_8888); 
         Canvas canvas = new Canvas(out); //使用canvas进行绘图 所有操作结果将直接作用在out上
         paint =  new Paint(Paint.ANTI_ALIAS_FLAG);
         canvas.drawRoundRect(new RectF(0, 0, bmp.getWidth(), bmp.getHeight()),25,25,paint);
         //绘制一个圆角矩形
         paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
         //为画笔增加Xfermode效果
         canvas.drawBitmap(bmp, 0, 0, paint);
    }
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.drawBitmap(out, 0,0, null);
        //将带有效果的out图绘制出来
    }

二.镜面与倒影效果

效果图

    private void innitView() {
         bmp = BitmapFactory.decodeResource(getResources(), R.drawable.test);
         Matrix matrix = new Matrix(); //建立一个矩阵对象
         matrix.setScale(1, -1); //将Y轴取反 得到倒影
         out = Bitmap.createBitmap(bmp,0,0,
                 bmp.getWidth(),
                 bmp.getHeight(),
                 matrix,
                 true);//复制一张相同的图
         paint = new Paint();
         paint.setShader(new LinearGradient(0, bmp.getHeight(), 0, bmp.getHeight()*2,
                 0XDD000000, 0X10000000, Shader.TileMode.CLAMP));//为画笔设置渐变的效果

    }
    @Override
    protected void onDraw(Canvas canvas) {
        canvas.drawBitmap(bmp, 0,0, paint);
        canvas.drawBitmap(out, 0, out.getHeight(), null);
        canvas.drawRect(0, out.getHeight(), out.getWidth(), out.getHeight()*2, paint);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值