Отрисовка кругов и овалов

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

Для рисования окруженостей применяется функция drawCircle():

fun drawCircle(
    color: Color,
    radius: Float = size.minDimension / 2.0f,
    center: Offset = this.center,
    alpha: @FloatRange(from = 0.0, to = 1.0) Float = 1.0f,
    style: DrawStyle = Fill,
    colorFilter: ColorFilter? = null,
    blendMode: BlendMode = DefaultBlendMode
): Unit

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

  • color: цвет окружности

  • center: точка верхнего левого углацентра окружености (значение типа Offset)

  • radius: радиус окружности

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

  • style: стиль заполнения окружности (значение DrawStyle)

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

  • blendMode: алгоритм смешивания, применяемый к цвету

Пример рисования окружности:

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

class MainActivity : ComponentActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            Canvas(Modifier.size(300.dp).background(Color.LightGray)) {
                drawCircle(
                    color = Color.DarkGray,
                    center = center,
                    radius = 120.dp.toPx()
                )
            }
        }
    }
}
Canvas и drawCircle в Jetpack Compose на Kotlin на Android

Для отрисовки овалов применяется функция drawOval()

fun drawOval(
    color: Color,
    topLeft: Offset = Offset.Zero,
    size: Size = this.size.offsetSize(topLeft),
    alpha: @FloatRange(from = 0.0, to = 1.0) Float = 1.0f,
    style: DrawStyle = Fill,
    colorFilter: ColorFilter? = null,
    blendMode: BlendMode = DefaultBlendMode
): Unit

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

  • color: цвет овала

  • topLeft: точка верхнего левого угла (значение типа Offset)

  • size: размер овала

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

  • style: стиль заполнения овала (значение DrawStyle)

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

  • blendMode: алгоритм смешивания, применяемый к цвету

По сути эта функция описывает прямоугольник, в который вписывается овал. Пример отрисовки овала:

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.geometry.Offset
import androidx.compose.ui.geometry.Size

class MainActivity : ComponentActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            Canvas(Modifier.size(300.dp).background(Color.LightGray)) {
                drawOval(
                    color = Color.DarkGray,
                    topLeft = Offset(x = 20.dp.toPx(), y = 60.dp.toPx()),
                    size = Size(
                        width = size.width - 50.dp.toPx(),
                        height = size.height/2
                    ),
                )
            }
        }
    }
}
Canvas и drawOval в Jetpack Compose на Kotlin на Android
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850