<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] # 1. 前言 這篇文章中放置一下在Canvas中的常用方法。 # 2. 獲取Canvas對象的方法 我們知道在自定義View的onDraw方法中就存在一個參數,也就是Canvas。也就是通常所說的畫布。那么,除了重寫這個方法外,我們還可以通過那些途徑來得到Canvas對象? ## 2.1 使用Bitmap創建 在圖像混合模式一節中,就使用過Bitmap來創建畫布,以及得到對應的Bitmap對象,比如: ~~~ /** * 創建的遮罩也的是一個Bitmap對象 * @param width 正方形圖片的寬度 * @return 返回創建的遮罩的Bitmap實例 */ private fun getMaskSrcBitmap(width: Int): Bitmap{ val center = width / 2f val bm = Bitmap.createBitmap(width, width, Bitmap.Config.ARGB_8888); val canvas = Canvas(bm) val paint = Paint(Paint.ANTI_ALIAS_FLAG) paint.color = Color.BLACK canvas.drawCircle(center, center, (width/2).toFloat(), paint) return bm } ~~~ 比如,可以將這個返回的Bitmap對象直接繪制出來: ~~~ override fun onDraw(canvas: Canvas?) { super.onDraw(canvas) canvas?.apply { // this == canvas val saveLayerId = saveLayer(0f, 0f, width.toFloat(), height.toFloat(), mRectPaint) drawBitmap(getMaskSrcBitmap(400), 0f, 0f, mRectPaint) restoreToCount(saveLayerId) } } ~~~ 結果: ![](https://img.kancloud.cn/72/a7/72a7c8d323271c90b0047a793782d606_184x139.png) 為了驗證該使用Bitmap創建的畫布只有指定的大小,這里不妨在getMaskSrcBitmap方法中添加一個背景色,即: ~~~ canvas.drawColor(Color.RED) ~~~ 結果: ![](https://img.kancloud.cn/56/7f/567f4934f3004b599c45ef23ed611220_173x133.png) 也就是,使用Canvas(bm)方法所實例化的畫布大小取決于傳入的Bitmap bm的大小。 這里需要**注意**的是:**當傳入一個Bitmap對象來實例化Canvas的時候,后續在這個 Canvas 上繪制的圖像也都會保存在這個Bitmap上,而畫布上沒有任何內容。** 如果想畫在View上,就必須使用onDraw(Canvas canvas)函數中傳入的Canvas畫一遍 Bitmap。也就是再繪制一遍Bitmap即可,上面的案例在onDraw方法中已經調用過了。 # 2.2 saveLayer 調用saveLayer方法來保存當前畫布狀態的時候,會自動創建一個圖層。之后的繪畫操作就是在這個圖層中進行的。 ## 2.3 saveLayerAlpha()函數 相比 saveLayer()函數,多了一個 alpha 參數,用于指定新建畫布的透明度,取值范圍為 0~ 255,可以用十六進制數的 oxAA 表示,取 0 時表示全透明。也就是可以指定新建圖層的透明度。 ## 2.4 通過 SurfaceView 的 SurfaceHolder.lockCanvas()函數獲取
                  <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>

                              哎呀哎呀视频在线观看