/ / Canvas draw bitmap?) - android, bitmap, kotlin, android-canvas

Canvas малює растровий малюнок?) - android, bitmap, kotlin, android-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)
}

Малюнок ресурсу має ширину та висоту

Відповіді:

0 для відповіді № 1

Рішення - намалювати прямокутне зображення з розміром растрових зображень і встановити деякий клір.

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)