Farben in Xamarin.Forms
Mit der Color
Struktur können Sie Farben als Rot-Grün-Blau (RGB)-Werte, Hue-Saturation-Luminosity (HSL)-Werte, HSV-Werte (Hue-Saturation-Value) oder mit einem Farbnamen angeben. Ein Alphakanal ist außerdem verfügbar, um die Transparenz anzugeben.
Color
Objekte können mit den Color
Konstruktoren erstellt werden, die verwendet werden können, um einen grauen Schatten, einen RGB-Wert oder einen RGB-Wert mit Transparenz anzugeben. In allen Fällen sind double
Argumente Werte zwischen 0 und 1.
Sie können auch statische Methoden zum Erstellen von Color
Objekten verwenden:
Color.FromRgb
fürdouble
RGB-Werte von 0 bis 1.Color.FromRgb
für ganzzahlige RGB-Werte von 0 bis 255.Color.FromRgba
fürdouble
RGB-Werte mit Transparenz.Color.FromRgba
für ganzzahlige RGB-Werte mit Transparenz.Color.FromHsla
fürdouble
HSL-Werte mit Transparenz.Color.FromHsv
fürdouble
HSV-Werte von 0 bis 1.Color.FromHsv
für ganzzahlige HSV-Werte von 0 bis 255.Color.FromHsva
fürdouble
HSV-Werte mit Transparenz.Color.FromHsva
für ganzzahlige HSV-Werte mit Transparenz.Color.FromUint
für einenuint
wert berechnet als (B + 256 * (G + 256 * (R + 256 * A))).Color.FromHex
für einstring
-Format aus hexadezimalen Ziffern in der Form „#AARRGGBB“ oder „#RRGGBB“ oder „#ARGB“ oder „#RGB“, wobei jeder Buchstabe einer hexadezimalen Ziffer für den Alpha-, Rot-, Grün- und Blaukanal entspricht.
Ein einmal erstelltes Color
-Objekt ist unveränderlich. Die Eigenschaften der Farbe können aus den folgenden Eigenschaften abgerufen werden:
R
, das den roten Kanal der Farbe darstellt.G
, das den grünen Kanal der Farbe darstellt.B
, das den blauen Kanal der Farbe darstellt.A
, das den Alphakanal der Farbe darstellt.Hue
, der den Farbtonkanal der Farbe darstellt.Saturation
, der den Sättigungskanal der Farbe darstellt.Luminosity
, der den Leuchtdichtekanal der Farbe darstellt.
Diese Eigenschaften sind alle double
Werte zwischen 0 und 1.
Benannte Farben
Die Color
Struktur definiert auch 240 öffentliche statische schreibgeschützte Felder für allgemeine Farben, z AliceBlue
. B. .
Color.Accent
Der Color.Accent
-Wert ergibt eine plattformspezifische (und manchmal vom Benutzer auswählbare) Farbe, die entweder auf einem dunklen oder hellen Hintergrund sichtbar ist.
Color.Default
Der Color.Default
Wert definiert einen Color
Mit allen Kanälen, die auf -1 festgelegt sind, und soll das Farbschema der Plattform erzwingen. Folglich hat sie in unterschiedlichen Kontexten auf verschiedenen Plattformen eine andere Bedeutung. Standardmäßig lauten die Plattformfarbschemas wie folgt:
- iOS: dunkler Text auf einem hellen Hintergrund.
- Android: dunkler Text auf hellem Hintergrund.
- Windows: dunkler Text auf einem hellen Hintergrund.
Color.Transparent
Der Color.Transparent
Wert definiert eine Color
Mit allen Kanälen, die auf Null festgelegt sind.
Ändern von Farben
Mehrere Instanzmethoden erlauben das Ändern einer vorhandenen Farbe, um eine neue Farbe zu erstellen:
AddLuminosity
gibt einenColor
Wert zurück, indem die Leuchtdichte durch das angegebene Delta geändert wird.MultiplyAlpha
gibt einenColor
Wert zurück, indem der Alphawert geändert und mit dem angegebenen Alphawert multipliziert wird.ToHex
gibt eine hexadezimalestring
-Darstellung einerColor
zurück.WithHue
gibt einenColor
Farbton zurück, der den Farbton durch den angegebenen Wert ersetzt.WithLuminosity
gibt einenColor
Wert zurück, der die Leuchtdichte durch den angegebenen Wert ersetzt.WithSaturation
gibt einenColor
Wert zurück, der die Sättigung durch den angegebenen Wert ersetzt.
Implizite Konvertierungen
Die implizite Konvertierung zwischen den Xamarin.Forms.Color
Typen kann System.Drawing.Color
ausgeführt werden:
Xamarin.Forms.Color xfColor = Xamarin.Forms.Color.FromRgb(0, 72, 255);
System.Drawing.Color sdColor = System.Drawing.Color.FromArgb(38, 127, 0);
// Implicity convert from a Xamarin.Forms.Color to a System.Drawing.Color
System.Drawing.Color sdColor2 = xfColor;
// Implicitly convert from a System.Drawing.Color to a Xamarin.Forms.Color
Xamarin.Forms.Color xfColor2 = sdColor;
Beispiele
In XAML werden Farben in der Regel mit ihren benannten Werten oder mit ihren Hex-Darstellungen referenziert:
<Label Text="Sea color"
TextColor="Aqua" />
<Label Text="RGB"
TextColor="#00FF00" />
<Label Text="Alpha plus RGB"
TextColor="#CC00FF00" />
<Label Text="Tiny RGB"
TextColor="#0F0" />
<Label Text="Tiny Alpha plus RGB"
TextColor="#C0F0" />
Hinweis
Bei Verwendung der XAML-Kompilierung wird die Groß-/Kleinschreibung von Farbnamen nicht beachtet und kann daher in Kleinbuchstaben geschrieben werden. Weitere Informationen zur XAML-Kompilierung finden Sie unter XAML Compilation (XAML-Kompilierung).
In C# wird auf Farben in der Regel mithilfe der entsprechenden benannten Werte oder mit den zugehörigen statischen Methoden verwiesen:
Label red = new Label { Text = "Red", TextColor = Color.Red };
Label orange = new Label { Text = "Orange", TextColor = Color.FromHex("FF6A00") };
Label yellow = new Label { Text = "Yellow", TextColor = Color.FromHsla(0.167, 1.0, 0.5, 1.0) };
Label green = new Label { Text = "Green", TextColor = Color.FromRgb (38, 127, 0) };
Label blue = new Label { Text = "Blue", TextColor = Color.FromRgba(0, 38, 255, 255) };
Label indigo = new Label { Text = "Indigo", TextColor = Color.FromRgb (0, 72, 255) };
Label violet = new Label { Text = "Violet", TextColor = Color.FromHsla(0.82, 1, 0.25, 1) };
Im folgenden Beispiel wird die OnPlatform
-Markuperweiterung verwendet, um die Farbe eines ActivityIndicator
festzulegen:
<ActivityIndicator Color="{OnPlatform iOS=Black, Default=Default}"
IsRunning="True" />
Der entsprechende C#-Code lautet:
ActivityIndicator activityIndicator = new ActivityIndicator
{
Color = Device.RuntimePlatform == Device.iOS ? Color.Black : Color.Default,
IsRunning = true
};