Farben in Xamarin.Forms
Mit Color
der -Struktur können Sie Farben als RGB-Werte (Rot-Grün-Blau), HSL-Werte (Hue-Saturation-Luminosity), Hue-Saturation-Value (HSV) 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 Grauton, einen RGB-Wert oder einen RGB-Wert mit Transparenz anzugeben. In allen Fällen sind double
Argumente Werte im Bereich von 0 bis 1.
Sie können auch statische Methoden verwenden, um Objekte zu erstellen Color
:
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
als berechneten Wert (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.
Nach der Erstellung ist ein Color
Objekt unveränderlich. Die Eigenschaften der Farbe können aus den folgenden Eigenschaften abgerufen werden:
R
, die den roten Kanal der Farbe darstellt.G
, die den grünen Kanal der Farbe darstellt.B
, die den blauen Kanal der Farbe darstellt.A
, der den Alphakanal der Farbe darstellt.Hue
, die den Farbtonkanal der Farbe darstellt.Saturation
, die den Sättigungskanal der Farbe darstellt.Luminosity
, der den Leuchtkraftkanal der Farbe darstellt.
Diese Eigenschaften sind alle double
Werte im Bereich von 0 bis 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 ein Color
mit allen Kanälen, die auf -1 festgelegt sind, und soll das Farbschema der Plattform erzwingen. Folglich hat es eine andere Bedeutung in verschiedenen Kontexten auf verschiedenen Plattformen. Standardmäßig lauten die Plattformfarbschemas wie folgt:
- iOS: dunkler Text auf hellem Hintergrund.
- Android: dunkler Text auf hellem Hintergrund.
- Fenster: dunkler Text auf hellem Hintergrund.
Color.Transparent
Der Color.Transparent
-Wert definiert eine Color
mit allen Kanälen, die auf 0 (null) festgelegt sind.
Ändern einer Farbe
Mehrere Instanzmethoden erlauben das Ändern einer vorhandenen Farbe, um eine neue Farbe zu erstellen:
AddLuminosity
gibt einenColor
zurück, indem die Helligkeit durch das angegebene Delta geändert wird.MultiplyAlpha
gibt eine zurückColor
, indem Sie das Alpha ändern und mit dem angegebenen Alphawert multiplizieren.ToHex
gibt eine hexadezimalestring
Darstellung eines zurückColor
.WithHue
gibt einenColor
zurück, wobei der Farbton durch den angegebenen Wert ersetzt wird.WithLuminosity
gibt einColor
zurück, wobei die Leuchtkraft durch den angegebenen Wert ersetzt wird.WithSaturation
gibt einenColor
zurück, wobei die Sättigung durch den angegebenen Wert ersetzt wird.
Implizite Konvertierungen
Die implizite Konvertierung zwischen den Xamarin.Forms.Color
Typen und System.Drawing.Color
kann 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 bei Farbnamen die Groß-/Kleinschreibung nicht beachtet und kann daher in Kleinbuchstaben geschrieben werden. Weitere Informationen zur XAML-Kompilierung finden Sie unter XAML Compilation (XAML-Kompilierung).
In C# werden Farben in der Regel mit ihren benannten Werten oder mit ihren statischen Methoden referenziert:
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
selektiv 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
};