Xamarin.Forms の色
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
表現を返します。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
};