Xfermode圖層混合

Xfermode圖層混合

  • 圖層混合幾種模式
  • 根據圖片能夠看出共有16中模式git

    1.PorterDuff.Mode.CLEAR

    所繪製不會提交到畫布上github

    2.PorterDuff.Mode.SRC

    顯示上層繪製圖片canvas

    3.ProterDuff.Mode.DST

    顯示下層繪製圖片bash

    4.PorterDuff.Mode.SRC_OVER

    正常繪製顯示,上下層繪製疊蓋ui

    5.PorterDuff.Mode.DST_OVER

    上下層都顯示。下層居上顯示spa

    6.PorterDuff.Mode.SRC_IN

    取兩層繪製交集。顯示上層。code

    7.PorterDuff.Mode.DST_IN

    取兩層繪製交集。顯示下層。cdn

    8.PorterDuff.Mode.SRC_OUT

    取上層繪製非交集部分blog

    9.PorterDuff.Mode.DST_OUT

    取下層繪製非交集部分圖片

    10.PorterDuff.Mode.SRC_ATOP

    取下層非交集部分與上層交集部分

    11.PorterDuff.Mode.DST_ATOP

    取上層非交集部分與下層交集部分

    12.PorterDuff.Mode.XOR

    異或:去除兩圖層交集部分

    13.PorterDuff.Mode.DARKEN

    取兩圖層所有區域,交集部分顏色加深

    14.PorterDuff.Mode.LIGHTEN

    取兩圖層所有,點亮交集部分顏色

    15.PorterDuff.Mode.MULTIPLY

    取兩圖層交集部分疊加後顏色

    16.PorterDuff.Mode.SCREEN

    取兩圖層所有區域,交集部分變爲透明色

  • 根據圖層混合模式實現圓角圖片

    private Bitmap getRoundBitMap(Bitmap bitmap) {
          Bitmap bitmap1 = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
          Canvas canvas = new Canvas(bitmap1);
          Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
          mPaint.setAntiAlias(true);
          canvas.drawARGB(0, 0, 0, 0);
          mPaint.setColor(0xff000000);
          canvas.drawRoundRect(new RectF(rect), 20, 20, mPaint);
          mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
          canvas.drawBitmap(bitmap, rect, rect, mPaint);
          mPaint.setXfermode(null);
          return bitmap1;
      }
    複製代碼

    Demo地址

    感謝

    感謝你們的閱讀 點個讚唄
    關注我 持續更新

    Github

相關文章
相關標籤/搜索