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

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                [TOC] # 1. 前言 Shader 在三維軟件中被稱為著色器,是用來給空白圖形上色的。在 Photoshop 中有一個印 章工具,能夠指定印章的樣式來填充圖形。Paint 中有一個函數專門用于設置 Shader: ``` public Shader setShader(Shader shader) ``` Shader 類其實是一個空類,它的功能主要是靠它的派生類來實現的,有BitmapShader、ComposeShader、LinearGradient、RadialGradient、SweepGradient。 # 2. BitmapShader 其構造函數如下: ``` public BitmapShader(Bitmap bitmap, TileMode tileX, TileMode tileY) ``` 這就相當于 Photoshop 中的印章工具,bitmap用來指定圖案,tileX 用來指定當 X 軸超出 單張圖片大小時所使用的重復策略,tileY 用來指定當 Y 軸超出單張圖片大小時所使用的重復策略。 TileMode 的取值如下。 * TileMode.CLAMP:用邊緣色彩來填充多余空間。 * TileMode.REPEAT:重復原圖像來填充多余空間。 * TileMode.MIRROR:重復使用鏡像模式的圖像來填充多余空間。 因為其重復策略模式的不同,這里可以用來做一些簡單的案例。 ## 2.1 圓形圖片——Shader結合Matrix實現 效果: ![](https://img.kancloud.cn/89/6f/896f2b816a011ced5c11ba89f858ebe0_440x273.png) 代碼: ~~~ class ShaderDemo : View { constructor(context: Context?) : super(context) { init() } constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) { init() } constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super( context, attrs, defStyleAttr ) { init() } private lateinit var mContentBitmap: Bitmap private lateinit var mPaint: Paint private fun init() { // 創建背景Bitmap mPaint = Paint() mPaint.color = Color.RED mPaint.strokeWidth = 5f mPaint.isAntiAlias = true mPaint.style = Paint.Style.FILL mPaint.isDither = true mPaint.textSize = Tool.dp2px(resources, 30f) // 得到資源文件的Bitmap對象 mContentBitmap = BitmapFactory.decodeResource(resources, R.drawable.b) // 應用matrix變換 val matrix= Matrix() val scale = 80f / mContentBitmap.width // 縮放倍率,圓形坐標 matrix.setScale(scale, scale, 200f, 200f) // 創建BitmapShader,用來作為背景層 val shader = BitmapShader(mContentBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP) // 設置Shader的變換矩陣 shader.setLocalMatrix(matrix) // 為畫筆mPaint設置一個Shader mPaint.setShader(shader) } override fun onDraw(canvas: Canvas?) { super.onDraw(canvas) // 為了明顯,這里為畫布添加一個灰色的背景色 canvas?.drawColor(Color.GRAY) // 繪制一個圓 canvas?.drawCircle(200f, 200f, 80f, mPaint) } } ~~~ 在這里為了保證所加載的資源R.drawable.b可以填充整個圓形區域,這里對這個BitmapShader應用了矩陣縮放。然后為畫筆設置Shader來進行圓形的背景使用圖片填充,做到圓角圖片效果。 ## 2.2 圓角矩形圖片 當然,可以繪制一個圓角矩形的,這類僅修改onDraw函數: ~~~ override fun onDraw(canvas: Canvas?) { super.onDraw(canvas) // 為了明顯,這里為畫布添加一個灰色的背景色 canvas?.drawColor(Color.GRAY) // 繪制一個圓角矩形 val rectF = RectF(100f, 100f, 300f, 300f) canvas?.drawRoundRect(rectF, 15f, 15f, mPaint) } ~~~ 效果: ![](https://img.kancloud.cn/ed/d5/edd55e04df6e6b0db7b4c0d3ed68add1_562x335.png) 當然,也可以來嘗試下發光效果,為畫筆設置: ~~~ // 設置內發光 val maskFilter = BlurMaskFilter(5f, BlurMaskFilter.Blur.NORMAL) mPaint.setMaskFilter(maskFilter) ~~~ 效果: ![](https://img.kancloud.cn/20/5d/205dad09aaf71177765dd6ad8fda9acf_757x499.png)
                  <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>

                              哎呀哎呀视频在线观看