我知道要在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资源有宽度和高度
答案 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)