Farben in Xamarin.Forms

Beispiel herunterladen Das Beispiel herunterladen

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ür double RGB-Werte von 0 bis 1.
  • Color.FromRgb für ganzzahlige RGB-Werte von 0 bis 255.
  • Color.FromRgba für double RGB-Werte mit Transparenz.
  • Color.FromRgba für ganzzahlige RGB-Werte mit Transparenz.
  • Color.FromHsla für double HSL-Werte mit Transparenz.
  • Color.FromHsv für double HSV-Werte von 0 bis 1.
  • Color.FromHsv für ganzzahlige HSV-Werte von 0 bis 255.
  • Color.FromHsva für double HSV-Werte mit Transparenz.
  • Color.FromHsva für ganzzahlige HSV-Werte mit Transparenz.
  • Color.FromUint für einen uint als berechneten Wert (B + 256 * (G + 256 * (R + 256 * A))).
  • Color.FromHex für ein string-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 einen Color zurück, indem die Helligkeit durch das angegebene Delta geändert wird.
  • MultiplyAlpha gibt eine zurück Color , indem Sie das Alpha ändern und mit dem angegebenen Alphawert multiplizieren.
  • ToHex gibt eine hexadezimale string Darstellung eines zurück Color.
  • WithHue gibt einen Colorzurück, wobei der Farbton durch den angegebenen Wert ersetzt wird.
  • WithLuminosity gibt ein Colorzurück, wobei die Leuchtkraft durch den angegebenen Wert ersetzt wird.
  • WithSaturation gibt einen Colorzurü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 ActivityIndicatorselektiv 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
};