Teilen über


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.

ColorObjekte 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ü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 wert berechnet als (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.

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 einen Color Wert zurück, indem die Leuchtdichte durch das angegebene Delta geändert wird.
  • MultiplyAlpha gibt einen Color Wert zurück, indem der Alphawert geändert und mit dem angegebenen Alphawert multipliziert wird.
  • ToHex gibt eine hexadezimale string-Darstellung einer Color zurück.
  • WithHue gibt einen ColorFarbton zurück, der den Farbton durch den angegebenen Wert ersetzt.
  • WithLuminosity gibt einen ColorWert zurück, der die Leuchtdichte durch den angegebenen Wert ersetzt.
  • WithSaturation gibt einen ColorWert 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
};