Как нарисовать ImageVector на холсте jetpack compose

Я конвертирую SVG в векторный ресурс, импортируя его в студию Android. Как я могу нарисовать этот вектор на холсте с помощью Jetpack Compose. Единственный вариант, который я вижу, - это drawImage, который принимает только ImageBitmap. Но это вектор, а не растровое изображение, поэтому есть способ просто нарисовать ImageVector.

      val logoVector: ImageVector = ImageVector.vectorResource(id = R.drawable.diasyst_logo)

2 ответа

Вы можете обернуть свой ImageVectorв VectorPainter, который может рендерить в стандартный холст для компоновки.

      val vector = ImageVector.vectorResource(id = R.drawable.ic_launcher_foreground)
val painter = rememberVectorPainter(image = vector)
Canvas(modifier = Modifier.fillMaxSize()) {
    with(painter) {
        draw(painter.intrinsicSize)
    }
}

Если строго не требуется втягивать , Iconа также ImageКомпоновщики принимают ресурс векторной графики.

      Icon(
 imageVector = ...
 contentDescription = ""
)

Image(
 imageVector = ...
 contentDescription = ""
)

Кроме этого, единственный способ - преобразовать вектор в формат, который вы можете использовать внутри drawImageметод Canvas. Я знаю, что вы беспокоитесь о производительности и оптимизации, но будьте уверены, с использованием метода преобразования проблем не возникнет.

Другие вопросы по тегам