画布绘制位图?)

时间:2017-07-30 20:12:20

标签: android bitmap kotlin android-canvas

我知道要在canvas中绘制位图,我们需要为全屏图像调用canvas.drawBitmap(filterBitmap,0f,0f,paint)。 但我不知道为什么我的代码不起作用,我的ImageView是空的。

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val bitmap = BitmapFactory.decodeResource(resources, R.drawable.grass)
    val filterBitmap = Bitmap.createBitmap(bitmap.width, bitmap.height, bitmap.config)

    val paint = Paint().apply {
        color = Color.RED
        style = Paint.Style.FILL
    }
    val canvas = Canvas(filterBitmap)
    canvas.drawBitmap(filterBitmap, 0f, 0f, paint)
    filter_image.setImageBitmap(filterBitmap)
}

Drawble资源有宽度和高度

1 个答案:

答案 0 :(得分:0)

解决方案是使用位图大小绘制rect并设置一些clor。

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val bitmap = BitmapFactory.decodeResource(resources, R.drawable.grass)
    val filterBitmap = Bitmap.createBitmap(bitmap.width, bitmap.height, bitmap.config)

    button.setOnClickListener {
        val paint = Paint().apply {
            color = Color.RED
        }
        val canvas = Canvas(filterBitmap)
        canvas.drawRect(Rect(/*bitmap size**/), Paint())
        filter_image.setImageBitmap(filterBitmap)
    }
}

} 在这种情况下

val filterBitmap = Bitmap.createBitmap(bitmap.width, bitmap.height, bitmap.config)

我们有透明位图

之类的东西

或使用

filterBitmap.eraseColor(Color.RED)