gpt4 book ai didi

android - Jetpack Compose 中的倾斜渐变背景

转载 作者:行者123 更新时间:2023-12-04 23:41:17 26 4
gpt4 key购买 nike

我正在尝试在 Jetpack Compose 中绘制渐变背景,并且我希望渐变具有固定的角度,而不管我正在绘制的对象的形状如何。
但是,使用 Modifier.background(brush=...) ,我能找到的最好的是linearGradient它从梯度的固定起点和终点计算角度。
例如,有没有一种方法可以在不知道最终大小的情况下指定我想要一个 45 度角的渐变?
编辑:我想要一个可以适用于任何给定角度的解决方案,而不仅仅是 45 度。

最佳答案

您可以使用 Modifier.drawBehind()并计算点的坐标以绘制渐变颜色。

fun Modifier.gradientBackground(colors: List<Color>, angle: Float) = this.then(
Modifier.drawBehind {
val angleRad = angle / 180f * PI
val x = cos(angleRad).toFloat() //Fractional x
val y = sin(angleRad).toFloat() //Fractional y

val radius = sqrt(size.width.pow(2) + size.height.pow(2)) / 2f
val offset = center + Offset(x * radius, y * radius)

val exactOffset = Offset(
x = min(offset.x.coerceAtLeast(0f), size.width),
y = size.height - min(offset.y.coerceAtLeast(0f), size.height)
)

drawRect(
brush = Brush.linearGradient(
colors = colors,
start = Offset(size.width, size.height) - exactOffset,
end = exactOffset
),
size = size
)
}
)
例子:
Modifier
.gradientBackground(listOf(Color.Red, Color.Green), angle = 45f)
1

关于android - Jetpack Compose 中的倾斜渐变背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68218714/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com