Canvas

Canvas

Предоставляет интерфейс для работы с 2D-графикой, который позволяет напрямую рисовать на экране.

Canvas(
    modifier = Modifier.size(100.dp)
) {
    drawCircle(Color.Red)
}
drawLine

Функция в DrawScope, которая рисует линию на Canvas.

Canvas(
    modifier = Modifier.fillMaxWidth(fraction = 0.8F)
) {
    drawLine(
        color = Color.Black,
        start = Offset(0F, 0F),
        end = Offset(size.width, 0F),
        strokeWidth = 20F,
        cap = StrokeCap.Round
    )
}

brush градиент или текстура линии.

color цвет линии.

start координаты начальной точки (Offset).

end координаты конечной точки (Offset).

strokeWidth толщина линии в пикселях.

cap стиль концов линии (например, Butt, Round, Square).

pathEffect дополнительные эффекты (например, пунктир).

alpha прозрачность линии (от 0F до 1F, где 1F — полностью непрозрачный).

colorFilter наложение фильтра на цвет линии.

blendMode режим наложения цвета (например, SrcOver, DstOver, Multiply).

Preview
drawRect

Функция в DrawScope, которая рисует прямоугольник на Canvas.

Canvas(
    modifier = Modifier.size(200.dp)
) {
    drawRect(
        color = Color.Black,
        size = Size(200.dp.toPx(), 100.dp.toPx())
    )
}

brush градиент или текстура прямоугольника.

color цвет прямоугольника.

topLeft начальная позиция верхнего левого угла (Offset).

size размеры прямоугольника (Size), ширина и высота.

alpha прозрачность прямоугольника (от 0F до 1F, где 1F — полностью непрозрачный).

style стиль заливки (Fill для заполнения или Stroke для контура).

colorFilter наложение фильтра на цвет прямоугольника.

blendMode режим наложения цвета (например, SrcOver, DstOver, Multiply).

Preview
drawRoundRect

Функция в DrawScope, которая рисует прямоугольник с закругленными углами на Canvas.

Canvas(
    modifier = Modifier.size(200.dp)
) {
    drawRoundRect(
        color = Color.Black,
        size = Size(200.dp.toPx(), 100.dp.toPx()),
        cornerRadius = CornerRadius(16.dp.toPx(), 16.dp.toPx())
    )
}

brush градиент или текстура прямоугольника.

color цвет прямоугольника.

topLeft начальная позиция верхнего левого угла (Offset).

size размеры прямоугольника (Size), ширина и высота.

cornerRadius радиус закругления углов (CornerRadius), который принимает x и y значения для определения степени скругления.

alpha прозрачность прямоугольника (от 0F до 1F, где 1F — полностью непрозрачный).

style стиль заливки (Fill для заполнения или Stroke для контура).

colorFilter наложение фильтра на цвет прямоугольника.

blendMode режим наложения цвета (например, SrcOver, DstOver, Multiply).

Preview
drawCircle

Функция в DrawScope, которая рисует круг на Canvas.

Canvas(
    modifier = Modifier.size(100.dp)
) {
    drawCircle(
        color = Color.Black
    )
}

brush градиент или текстура круга.

color цвет круга.

radius радиус круга в пикселях.

center координаты центра круга на относительно верхнего левого угла Canvas. (Offset).

alpha прозрачность круга (от 0F до 1F, где 1F — полностью непрозрачный).

style может быть Fill (закрашенный круг) или Stroke (только контур). По умолчанию используется Fill.

colorFilter наложение фильтра на цвет круга.

blendMode режим наложения цвета (например: SrcOver, DstOver, Multiply).

Preview
drawOval

Функция в DrawScope, которая рисует овал на Canvas.

Canvas(
    modifier = Modifier.size(200.dp)
) {
    drawOval(
        color = Color.Black,
        size = Size(200.dp.toPx(), 100.dp.toPx())
    )
}

brush градиент или текстура овала.

color цвет овала.

topLeft начальная позиция верхнего левого угла (Offset).

size размеры овала (Size), ширина и высота.

alpha прозрачность овала (от 0F до 1F, где 1F — полностью непрозрачный).

style стиль заливки (Fill для заполнения или Stroke для контура).

colorFilter наложение фильтра на цвет овала.

blendMode режим наложения цвета (например: SrcOver, DstOver, Multiply).

Preview
drawArc

Функция в DrawScope, которая рисует дуги (сектора) окружности на Canvas.

Canvas(
    modifier = Modifier.size(200.dp)
) {
    drawArc(
        color = Color.Black,
        startAngle = 180F,
        sweepAngle = 180F,
        useCenter = false,
        topLeft = Offset((size.width - 200F) / 2, (size.height - 200F) / 2),
        size = Size(200F, 200F),
        style = Stroke(width = 20F)
    )
}

brush градиент или текстура дуги.

color цвет дуги.

startAngle начальный угол дуги (в градусах), измеряется от горизонтальной оси вправо (0°) и идет по часовой стрелке.

sweepAngle угол, на который будет растягиваться дуга (в градусах). Положительные значения рисуют по часовой стрелке, отрицательные — против.

useCenter если true, дуга будет нарисована как сектор (замкнется к центру), если false — рисуется как открытая дуга.

topLeft смещение верхнего левого угла ограничивающего прямоугольника, внутри которого рисуется дуга.

size размер ограничивающего прямоугольника (Size), который определяет радиус дуги.

alpha прозрачность дуги (от 0F до 1F, где 1F — полностью непрозрачный).

style стиль заливки (Fill для заполнения или Stroke для контура).

colorFilter наложение фильтра на цвет дуги.

blendMode режим наложения цвета (например, SrcOver, DstOver, Multiply).

Preview
drawPath

Функция в DrawScope, которая рисует контуры на Canvas.

Canvas(
    modifier = Modifier.size(200.dp)
) {
    val path = Path().apply {
        moveTo(size.width / 2, 0F)
        lineTo(size.width, size.height)
        lineTo(0f, size.height)
        close()
    }

    drawPath(
        path = path,
        color = Color.Black
    )
}

path объект Path, который определяет форму или траекторию, по которой рисуется контур.

color цвет контура.

brush градиент или текстура контура.

alpha прозрачность контура (от 0F до 1F, где 1F — полностью непрозрачный).

style стиль заливки (Fill для заполнения или Stroke для контура).

colorFilter наложение фильтра на цвет контура.

blendMode режим наложения цвета (например, SrcOver, DstOver, Multiply).

Preview
drawPoints

Функция в DrawScope, которая рисует множество точек на Canvas.

points список точек (List<Offset>), где каждая точка определяет координаты (x и y) для рисования.

pointMode режим рисования точек (PointMode.Points, PointMode.Lines, PointMode.Polygon).

color цвет точек или линий между ними.

brush градиент или текстура точек или линий между ними.

strokeWidth толщина точек или линий.

cap стиль концов линий, если pointMode установлен на Lines или Polygon. Доступные значения: Butt, Round, Square.

pathEffect изменяет внешний вид линий или точек, добавляя эффекты, такие как пунктирные линии, узоры или волнистые линии.

alpha прозрачность дуги (от 0F до 1F, где 1F — полностью непрозрачный).

colorFilter наложение фильтра на цвет дуги.

blendMode режим наложения цвета (например, SrcOver, DstOver, Multiply).

Preview
drawImage

Функция в DrawScope, которая рисует изображение на Canvas.

@Composable
fun SimpleDrawImage(imageBitmap: ImageBitmap) {
    Canvas(
        modifier = Modifier.size(300.dp)
    ) {
        drawImage(
            image = imageBitmap,
            topLeft = Offset(50F, 50F),
            alpha = 0.9F
        )
    }
}

image объект типа ImageBitmap.

topLeft начальная позиция верхнего левого угла (Offset).

srcOffset начальная точка обрезки в исходном изображении (IntOffset).

srcSize размер области исходного изображения (IntSize).

dstOffset точка, куда будет помещено изображение на Canvas (IntOffset).

dstSize конечный размер изображения на Canvas (IntSize).

alpha прозрачность дуги (от 0F до 1F, где 1F — полностью непрозрачный).

style стиль заливки (Fill для заполнения или Stroke для контура).

colorFilter наложение фильтра на цвет изображения.

blendMode режим наложения цвета (например, SrcOver, DstOver, Multiply).

filterQuality качество масштабирования изображени (FilterQuality).

Gradient
val gradientBrush = Brush.horizontalGradient(listOf(MaterialTheme.colorScheme.red, MaterialTheme.colorScheme.blue))

Canvas(
    modifier = Modifier,
    onDraw = { drawRect(gradientBrush) }
)