Android 画布canvas drawARGB(int a, int r, int g, int b)

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值