Отрисовка изображений

Последнее обновление: 14.04.2024

Для отрисовки изображений применяется функция drawImage(). Она имеет ряд версий. Простая версия:

fun drawImage(
    image: ImageBitmap,
    topLeft: Offset = Offset.Zero,
    alpha: @FloatRange(from = 0.0, to = 1.0) Float = 1.0f,
    style: DrawStyle = Fill,
    colorFilter: ColorFilter? = null,
    blendMode: BlendMode = DefaultBlendMode
): Unit

Эта функция принимает следующие параметры:

  • image: изображение - объект ImageBitmap для отрисовки

  • topLeft: координаты верхнего левого угла на Canvas

  • alpha: прозрачность, применяемая к изображению в виде значения из диапазона от 0.0f до 1.0f

  • style: стиль заполнения изображения

  • colorFilter: цветовой фильтр ColorFilter, который применяется к изображению

  • blendMode: алгоритм смешивания, применяемый к изображению

Другая версия функции:

fun drawImage(
    image: ImageBitmap,
    srcOffset: IntOffset = IntOffset.Zero,
    srcSize: IntSize = IntSize(image.width, image.height),
    dstOffset: IntOffset = IntOffset.Zero,
    dstSize: IntSize = srcSize,
    alpha: @FloatRange(from = 0.0, to = 1.0) Float = 1.0f,
    style: DrawStyle = Fill,
    colorFilter: ColorFilter? = null,
    blendMode: BlendMode = DefaultBlendMode,
    filterQuality: FilterQuality = DefaultFilterQuality
): Unit

Здесь добавлется четыре параметра, которые позволяют вывести часть изображения в определенную часть на Canvas:

  • srcOffset: смещение на оригинальном изображении, откуда надо взять часть изображения

  • srcSize: прямоугольная область, которая берется из оригинального изображения

  • dstOffset: смещение верхнего левого угла, на который будет позиционироваться изображение

  • dstSize: прямоугольная область, в которую вписывается изображение

Допустим, в папку res/drawable добавлено некоторое изображение. В моем случае это файл "forest.png"

Canvas и вывод изображения в Jetpack Compose на Kotlin на Android

Выведем это изображение на Canvas:

package com.example.helloapp

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.Canvas
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.size
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
import androidx.compose.ui.res.imageResource
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.graphics.ImageBitmap

class MainActivity : ComponentActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            val image = ImageBitmap.imageResource(R.drawable.forest)
            Canvas(Modifier.size(400.dp, 300.dp).background(Color.LightGray)) {
                drawImage(
                    image = image,
                    topLeft = Offset(x = 0f, y = 0f)
                )
            }
        }
    }
}
Canvas и drawImage и вывод изображения в Jetpack Compose на Kotlin на Android
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850