Как нарисовать 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
. Я знаю, что вы беспокоитесь о производительности и оптимизации, но будьте уверены, с использованием метода преобразования проблем не возникнет.