android 常用图片处理效果总结

来源:互联网 发布:安徽芜湖java 编辑:程序博客网 时间:2024/06/07 01:43

一.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);    }
0 0