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