在背景上绘制透明位图

时间:2019-09-01 04:38:20

标签: android kotlin android-graphview

我想在游戏的背景上绘制透明的位图。但是,位图不是透明的,它在背景中仍然具有白色。这是我的代码

inner class Canvass(context: Context) : View(context) {
    override fun onDraw(canvas: Canvas) {
        super.onDraw(canvas)

        val frame_paint: Paint = Paint()
        frame_paint.style = Paint.Style.FILL
        frame_paint.isAntiAlias = true

        val framegame = BitmapFactory.decodeResource (resources, R.drawable.frame)
        canvas.drawBitmap (framegame, 0f, 0f, frame_paint)


        canvas.drawPath(mPath, mPaint)

        val tennis_paint: Paint = Paint()
        tennis_paint.style = Paint.Style.FILL
        tennis_paint.color = Color.TRANSPARENT
        tennis_paint.isAntiAlias = true

        val tennis = BitmapFactory.decodeResource (resources, R.drawable.tennis_ball)
        canvas.drawBitmap (tennis, 50f, 200f, tennis_paint)
    }
}

1 个答案:

答案 0 :(得分:-1)

我找到了这段代码,对我有用。

        val tennis_paint: Paint = Paint()
        tennis_paint.style = Paint.Style.FILL
        tennis_paint.isAntiAlias = true

        val tennis = BitmapFactory.decodeResource (resources, R.drawable.tennis_ball)
        var bitmap = transparent_bitmap(tennis)
        canvas.drawBitmap (bitmap, 50f, 300f, tennis_paint)

 fun transparent_bitmap(bmp:Bitmap):Bitmap{

        var bitmap: Bitmap = Bitmap.createBitmap(
            bmp.width,
            bmp.height,
            Bitmap.Config.ARGB_8888
        )

        bitmap.setHasAlpha(true)

        for (x in 1..bmp.width-1){
            for (y in 1..bmp.height-1){
                var pixel = bmp.getPixel(x,y)
                val redValue = Color.red(pixel)
                val blueValue = Color.blue(pixel)
                val greenValue = Color.green(pixel)

                if ((redValue==255)and(blueValue==255)and(greenValue==255)){
                    bitmap.setPixel(x,y,Color.argb(1,0,0,0))
                }else {
                    bitmap.setPixel(x,y,Color.rgb(redValue,greenValue,blueValue))
                }
            }
        }

        return bitmap
    }