Xamarin.Forms の色

Download Sampleサンプルのダウンロード

Color 構造体を使用すると、色を Red-Green-Blue (RGB) 値、Hue-Saturation-Luminosity (HSL) 値、Hue-Saturation-Value (HSV) 値、または色名で指定できます。 また、アルファ チャネルを使用して透明度を示すこともできます。

Color オブジェクトは、Color コンストラクターを使用して作成できます。これを使用して、灰色のシェードRGB 値、または透明度ありの RGB 値を指定できます。 いずれの場合も、引数は 0 から 1 の範囲の double 値です。

静的メソッドを使用して、Color オブジェクトを作成することもできます:

  • 0 から 1 の double RGB 値の場合は Color.FromRgb
  • 0 から 255 の整数の RGB 値の場合は Color.FromRgb
  • 透明度ありの double RGB 値の場合は Color.FromRgba
  • 透明度ありの整数 RGB 値の場合は Color.FromRgba
  • 透明度ありの double HSL 値の場合は Color.FromHsla
  • 0 から 1 の double HSV 値の場合は Color.FromHsv
  • 0 から 255 の整数の HSV 値の場合は Color.FromHsv
  • 透明度ありの double HSV 値の場合は Color.FromHsva
  • 透明度ありの整数 HSV 値の場合は Color.FromHsva
  • (B + 256 * (G + 256 * (R + 256 * A))) と計算される uint 値の場合は Color.FromUint
  • "#AARRGGBB" または "#RRGGBB" または "#ARGB" または "#RGB" 形式の 16 進数の string 形式の場合は Color.FromHex。この各文字は、アルファ、赤、緑、青の各チャンネルの 16 進数に対応します。

一度作成された Color オブジェクトは変更できません。 色の特性は、次のプロパティから取得できます。

  • R は、色の赤チャネルを表します。
  • G は、色の緑チャネルを表します。
  • B は、色の青チャネルを表します。
  • A は、色のアルファ チャネルを表します。
  • Hue は色の色相チャネルを表します。
  • Saturation は色の彩度チャネルを表します。
  • Luminosity は色の輝度チャネルを表します。

これらのプロパティは、いずれも 0 から 1 の範囲の double 値です。

名前付きの色

Color 構造では、AliceBlue など、一般的な色に対して 240 個のパブリック静的読み取り専用フィールドも定義されています。

Color.Accent

Color.Accent 値により、暗い背景または明るい背景に表示されるプラットフォーム固有の (場合によってはユーザーが選択可能な) 色になります。

Color.Default

Color.Default 値は、すべてのチャネルが -1 に設定された Color を定義し、プラットフォームの配色を適用することを目的としています。 その結果、プラットフォームごとに異なるコンテキストで異なる意味を持ちます。 既定では、プラットフォームの配色は次のとおりです。

  • iOS: 明るい背景に暗いテキスト。
  • Android: 明るい背景に暗いテキスト。
  • Windows: 明るい背景に暗いテキスト。

Color.Transparent

Color.Transparent 値は、すべてのチャネルがゼロに設定された Color を定義します。

色の変更

いくつかのインスタンス メソッドでは、既存の色を変更して新しい色を作成できます。

  • AddLuminosity は、指定されたデルタによって明るさを変更することによって、Color を返します。
  • MultiplyAlpha は、アルファを変更して Color を返し、指定されたアルファ値を乗算します。
  • ToHex は、Color の16 進数 string 表現を返します。
  • WithHueColor を返し、色相を指定された値に置き換えます。
  • WithLuminosityColor を返し、輝度を指定された値に置き換えます。
  • WithSaturationColor を返し、彩度を指定された値に置き換えます。

暗黙の変換

Xamarin.Forms.ColorSystem.Drawing.Color 型の間の暗黙的な変換を実行できます:

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;

XAML では、色は通常、名前付き値または 16 進表現を使用して参照されます:

<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" />

Note

XAML コンパイルを使用する場合、色名では大文字と小文字が区別されないため、小文字で記述できます。 XAML のコンパイルの詳細については、XAML のコンパイルに関するページを参照してください。

C# では、色は通常、名前付き値または静的メソッドを使用して参照されます。

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) };

次の例では、OnPlatform マークアップ拡張機能を使用して、ActivityIndicator の色を選択的に設定します:

<ActivityIndicator Color="{OnPlatform iOS=Black, Default=Default}"
                   IsRunning="True" />

同等の C# コードを次に示します。

ActivityIndicator activityIndicator = new ActivityIndicator
{
    Color = Device.RuntimePlatform == Device.iOS ? Color.Black : Color.Default,
    IsRunning = true
};