<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                關于圖像混合模式,這里記住一個模板: ~~~kotlin override fun onDraw(canvas: Canvas?) { super.onDraw(canvas) canvas?.apply { // this == canvas // 新建圖層 val saveLayerId = saveLayer(0f, 0f, width.toFloat(), height.toFloat(), mRectPaint) // 繪制目標圖像 canvas.drawBitmap(resBitmap, 100f, 100f, mRectPaint) // 設置圖像混合模式 mRectPaint.xfermode = // PorterDuffXfermode(PorterDuff.Mode.MULTIPLY) // 繪制源圖像 drawBitmap(bitmap, 100f, 100f, mRectPaint) // 清空圖像混合模式 mRectPaint.xfermode = null restoreToCount(saveLayerId) } } ~~~ 對應的效果模板: ![](https://img.kancloud.cn/87/71/8771be27e349916548aafdcb00475aa7_800x1352.png) 上圖來自博客:[Android 混合模式之 PorterDuffXfermode](https://blog.csdn.net/leilifengxingmw/article/details/105351758) 目標圖像是黃色的圓,源圖像是正方形藍色矩形。 對于其模式,這里簡單理解記錄一下: ~~~undefined Sa:全稱為Source alpha,表示源圖的Alpha通道; Sc:全稱為Source color,表示源圖的顏色; Da:全稱為Destination alpha,表示目標圖的Alpha通道; Dc:全稱為Destination color,表示目標圖的顏色. ~~~ > PorterDuff.Mode.CLEAR;\[0, 0\],alpha通道和顏色值均為0,什么都不顯示; PorterDuff.Mode.SRC;\[Sa, Sc\],顯示源圖像; PorterDuff.Mode.DST;\[Da, Dc\],顯示目標圖像; PorterDuff.Mode.SRC_OVER;\[Sa + (1 - Sa)\*Da, Rc = Sc + (1 - Sa)\*Dc\],正常繪制顯示,目標圖上繪制源圖; PorterDuff.Mode.DST_OVER;\[Sa + (1 - Sa)\*Da, Rc = Dc + (1 - Da)\*Sc\],與SRC_OVER相反,此模式是目標圖像被繪制在源圖像的上方; PorterDuff.Mode.SRC_IN;\[Sa \* Da, Sc \* Da\],取兩層繪制交集,且繪制效果受到目標圖像對應地方透明度的影響 PorterDuff.Mode.DST_IN;\[Sa \* Da, Sa \* Dc\],取兩層繪制交集。在兩者相交的地方繪制目標圖像,并且繪制的效果會受到源圖像對應地方透明度的影響 PorterDuff.Mode.SRC_OUT;\[Sa \* (1 - Da), Sc \* (1 - Da)\],表示如果相交處的目標色的alpha是完全不透明的,這時候源圖像會完全被過濾掉,否則會受到相交處目標色 alpha 影響,呈現出對應色值。 PorterDuff.Mode.DST_OUT;\[Da \* (1 - Sa), Dc \* (1 - Sa)\],可以類比SRC\_OUT , 在不相交的地方繪制目標圖像,相交處根據源圖像alpha進行過濾,完全不透明處則完全過濾,完全透明則不過濾 PorterDuff.Mode.SRC_ATOP;\[Da, Sc \* Da + (1 - Sa) \* Dc\],源圖像和目標圖像相交處繪制源圖像,不相交的地方繪制目標圖像,并且相交處的效果會受到源圖像和目標圖像alpha的影響 PorterDuff.Mode.DST_ATOP;取上層非交集部分與下層交集部分 PorterDuff.Mode.XOR;異或:去除兩圖層交集部分 PorterDuff.Mode.DARKEN;取兩圖層全部區域,交集部分顏色加深 PorterDuff.Mode.LIGHTEN;取兩圖層全部,點亮交集部分顏色 PorterDuff.Mode.MULTIPLY;正片疊底,取兩圖層交集部分疊加后顏色 PorterDuff.Mode.SCREEN;濾色,取兩圖層全部區域,交集部分變為透明色 更詳細的可以參考:《Android自定義控件開發入門與實戰》
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看