Kompose: Verblassen Sie einen horizontalen Gradienten (kombinieren Sie horizontale und vertikale Gradient)

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Kompose: Verblassen Sie einen horizontalen Gradienten (kombinieren Sie horizontale und vertikale Gradient)

by Anonymous » 09 Sep 2025, 13:49

Ich habe ein einfaches horizontales Gradientenbox, das von Farbe rot zu Farbe blau wird. Box: < /p>

Code: Select all

Box(
modifier = Modifier
.fillMaxWidth()
.fillMaxHeight()
.background(
brush = Brush.horizontalGradient(
colors = listOf(
Color.Red,
Color.Blue,
)
)
)
)
< /code>
Ich muss diesen horizontalen Gradienten machen, um auch vertikal zu einer transparenten Farbe auszublenden. Ein bisschen wie die Kombination dieses horizontalen Gradienten mit einem linearen Gradienten, der von vorhandenen Farben zu transparentem (verblassen).Box(
modifier = Modifier
.fillMaxWidth()
.fillMaxHeight()
.drawWithCache {
onDrawBehind {
drawRect(
brush = Brush.horizontalGradient(
colors = listOf(
Color.Red,
Color.Blue,
)
)
)
drawRect(
brush = Brush.verticalGradient(
colors = listOf(
Color.Green, // could be any color
Color.Transparent,
),
),
blendMode = BlendMode.DstIn,
)
}
}
)
Dies führte zu einem Ausblenden, aber es verblasst zu einer schwarzen Farbe, die für mich überrascht, da zwei Farben in vertikalem Graxhient keinen Einfluss haben, wenn der Mischmodus dstin ist. Ich verstehe es theoretisch, dass dies eine Maske ist, aber in der Praxis kann ich nicht verstehen, warum es zu schwarz verblasst ist. Verwenden von srcover gibt das folgende Ergebnis an:

SrcOver< /code> ähnelt dem, was ich brauche, aber es hat zwei Probleme: < /p>

Jetzt haben die Farben im vertikalen Gradienten einen Effekt, aber ich kann keine einzige Farbe (wie color.green) für den oberen Farben < /li>
Der Endfarbe ist transparent bedeutet. Aber ich brauchte tatsächlich ein "Masken" -Verhalten. Alt = "Bildbeschreibung hier eingeben" src = "https://i.static.net/ityqxflj.png"/>
Nun, genau das brauche ich vertikal, aber offensichtlich hat es den horizontalen Gradienten vollständig übernommen. Was ich erreichen möchte, ist eine Kombination aus dem ersten Bild und dem letzten Bild (natürlich ohne die grüne Farbe).
Jede Hilfe wird geschätzt.

Top