首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在画布中使用矢量绘图

在画布中使用矢量绘图
EN

Stack Overflow用户
提问于 2017-06-18 06:31:24
回答 2查看 6.6K关注 0票数 9
  • 我有一个导入SVG到我的项目作为向量绘图。
  • 我有我的自定义视图

我知道如何使用ImageView by代码(http://www.androidhive.info/2017/02/android-working-svg-vector-drawables/)显示可绘制的向量,这在几篇文章中有介绍,但是:

如何使用自定义视图和画布代码绘制向量?这能做到吗。如果是的话谁能给我个提示吗。

EN

回答 2

Stack Overflow用户

发布于 2021-05-17 14:38:01

为此,需要将向量转换为位图,如下所示:

代码语言:javascript
复制
private fun getVectorBitmap(context: Context, drawableId: Int): Bitmap? {

    var bitmap: Bitmap? = null

    when (val drawable = ContextCompat.getDrawable(context, drawableId)) {

        is BitmapDrawable -> {
            bitmap = drawable.bitmap
        }

        is VectorDrawable -> {

            bitmap = Bitmap.createBitmap(
                drawable.intrinsicWidth,
                drawable.intrinsicHeight, Bitmap.Config.ARGB_8888
            )
            
            val canvas = Canvas(bitmap)
            drawable.setBounds(0, 0, canvas.width, canvas.height)
            drawable.draw(canvas)

        }
    }

    return bitmap
}     

然后,您可以在画布中使用该向量作为位图,通常如下:

代码语言:javascript
复制
  canvas?.drawBitmap(getVectorBitmap(context, R.drawable.ic_icon), 500f, 500f, canvasPaint)
票数 2
EN

Stack Overflow用户

发布于 2022-08-18 19:55:36

我将把@pskink的评论变成一个答案,因为我在android领域还没有那么先进,以至于我很快就会明白他的意思。我必须阅读@克里希纳的答案才能理解。这两个人的功劳。下面是:

向量绘图继承了可以直接绘制到画布中的Drawable。首先,使用android上下文从资源中获取可绘制的内容:

代码语言:javascript
复制
val drawable = yourContext.getDrawable(drawableId)

然后用它画进画布。下一行告诉可绘制在左上角绘制,大小为32x32像素:

代码语言:javascript
复制
drawable.setBounds(0, 0, 32, 32) 

最后把它画到画布上:

代码语言:javascript
复制
drawable.draw(canvas)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44612353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档