画布绘制位图?
Posted
技术标签:
【中文标题】画布绘制位图?【英文标题】: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)
可绘制资源有宽度和高度。
【问题讨论】:
【参考方案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)
【讨论】:
以上是关于画布绘制位图?的主要内容,如果未能解决你的问题,请参考以下文章
“画布:Android Studio中试图绘制太大的位图”问题