画布绘制位图?)

我知道要在画布上绘制位图,我们需要为全屏图像调用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) } 

Drawable资源有宽度和高度

解决方案是绘制位图大小和设置一些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)