【问题标题】:Canvas draw bitmap?画布绘制位图?
【发布时间】:2018-01-06 08:07:27
【问题描述】:

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

可绘制资源有宽度和高度。

【问题讨论】:

    标签: android bitmap kotlin android-canvas


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多