Color 構造体を使用すると、色を Red-Green-Blue (RGB) 値、Hue-Saturation-Luminosity (HSL) 値、Hue-Saturation-Value (HSV) 値、または色名で指定できます。 また、アルファ チャネルを使用して透明度を示すこともできます。
Color オブジェクトは、Color コンストラクターを使用して作成できます。これを使用して、灰色のシェード、RGB 値、または透明度ありの RGB 値を指定できます。 いずれの場合も、引数は 0 から 1 の範囲の double 値です。
静的メソッドを使用して、Color オブジェクトを作成することもできます:
- 0 から 1 の
doubleRGB 値の場合はColor.FromRgb。 - 0 から 255 の整数の RGB 値の場合は
Color.FromRgb。 - 透明度ありの
doubleRGB 値の場合はColor.FromRgba。 - 透明度ありの整数 RGB 値の場合は
Color.FromRgba。 - 透明度ありの
doubleHSL 値の場合はColor.FromHsla。 - 0 から 1 の
doubleHSV 値の場合はColor.FromHsv。 - 0 から 255 の整数の HSV 値の場合は
Color.FromHsv。 - 透明度ありの
doubleHSV 値の場合は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表現を返します。WithHueはColorを返し、色相を指定された値に置き換えます。WithLuminosityはColorを返し、輝度を指定された値に置き換えます。WithSaturationはColorを返し、彩度を指定された値に置き換えます。
暗黙の変換
Xamarin.Forms.Color と System.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
};