void drawARGB(int a, int r, int g, int b)
Fill the entire canvas' bitmap (restricted to the current clip) with the specified ARGB color, using srcover porterduff mode.
也就是用ARGB颜色填充画布的意思。这个方法有三个参数,第一个参数a指的是透明度,颜色取值范围是(0..255),数值是0,表示完全不可见,数值是255,完全可见。第二参数r指的是红色,颜色取值范围是(0..255)。第三个参数g指的是绿色,颜色取值范围是(0..255)。第四个参数b指的是蓝色,颜色取值范围是(0..255)。没有返回值。
如何使用:
需求:要把画布颜色填充为下面这个颜色,应该如何实现。
关键代码:
canvas?.drawARGB(255,255,218,185)
完整代码:
package com.lxm.apipro.canvas.d4
import android.content.Context
import android.graphics.*
import android.util.AttributeSet
import android.view.View
import com.lxm.apipro.R
class CanvasView : View {
private var mContext: Context? = null
private var mBitmap: Bitmap = BitmapFactory.decodeResource(resources, R.drawable.pic1)
private var mPaint: Paint = Paint()
constructor(context: Context?) : this(context, null)
constructor(context: Context?, attrs: AttributeSet?) : this(context, attrs, 0)
constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(
context,
attrs,
defStyleAttr
) {
mContext = context
}
init {
mPaint?.isAntiAlias = true
}
override fun onDraw(canvas: Canvas?) {
super.onDraw(canvas)
//需求:图片从坐标(20,20)开始画
canvas?.save()
canvas?.drawBitmap(mBitmap,0f,0f,null)
canvas?.drawARGB(255,255,218,185)
canvas?.restore()
}
}
效果图:
需求2:如何使上面效果图是半透明呢?
把a的值改为127即可。也就是把
canvas?.drawARGB(127,255,218,185)替换掉canvas?.drawARGB(255,255,218,185)
效果如下图:
rgb各个值组合之后是什么颜色,可以参考rgb颜色表:
http://tool.oschina.net/commons?type=3