#android #android-jetpack-compose
#Android #android-jetpack-compose
Вопрос:
С помощью painter можно рисовать на ImageBitmap с помощью фрагмента
val imageBitmap: ImageBitmap = imageResource(id = R.drawable.landscape3)
val customPainter = remember {
object : Painter() {
override val intrinsicSize: Size
get() = Size(imageBitmap.width.toFloat(), imageBitmap.height.toFloat())
override fun DrawScope.onDraw() {
drawImage(imageBitmap)
drawLine(
color = Color.Red,
start = Offset(0f, 0f),
end = Offset(imageBitmap.width.toFloat(), imageBitmap.height.toFloat()),
strokeWidth = 5f
)
}
}
}
Image(painter = customPainter, contentDescription = null)
loadFontResource устарел. Вместо этого используйте fontResource.
ImageResource, loadImageResource, vectorResource и
loadVectorResource устарели. Вместо этого используйте painterResource.
(I6b809)
использование alpha12 imageResource
устарело. painter
drawImage(imageBitmap)
функция, которая рисует изображение, не имеет замены или другая функция, отличная от той, которая принимает ImageBitmap в качестве параметра?
В чем смысл ImageBitmap начиная с alpha12, поскольку не существует устаревшей функции для ее создания с помощью ресурса, а функция для получения ImageBitmap от Painter не существует.
Ответ №1:
начиная с Compose UI 1.0.0-beta01
ImageResource и vectorResource теперь являются функциями расширения в компаньонах ImageBitmap и ImageVector соответственно. функции ресурсов load{Image,Vector,Font} были удалены. (I89130)
import androidx.compose.ui.res.imageResource
// ...
val imageBitmap: ImageBitmap = ImageBitmap.imageResource(R.drawable.landscape3)
painterResource под капотом вызывает imageFromResource, так что мы тоже можем его использовать:
val imageBitmap: ImageBitmap = imageFromResource(
LocalContext.current.resources,
R.drawable.landscape3
)
Комментарии:
1. Да, похоже, это тот, который будет использоваться для создания ImageBitmap.
2. По состоянию на beta01, я думаю, он исчез. Разве нет способа создать композицию, чтобы получить ImageBitmap из ресурсов или чертежей?
3. @Thracian Теперь это функция расширения
imageResource
.
Ответ №2:
Я использую этот метод для использования растрового изображения или SVG
Image(
painterResource(id = R.drawable.video),
contentDescription = "",
)
Ответ №3:
при стабильной версии Compose 1.0 и выше вы должны использовать
useResource("image.png") { loadImageBitmap(it) }
это вернет ImageBitmap
объект.
Существует также painterResource("image.png")
, но это вернет Painter
объект.
Ответ №4:
если вам нужно установить ImageVector из папки для рисования, используйте:
ImageVector.vectorResource(id = R.drawable.ic_example)
ic_example — векторный файл «.xml», добавленный из файла svg