android 常用圖片處理效果總結

一.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);
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章