Xamarin.Forms中的颜色
使用Color
结构,可以将颜色指定为红-绿-蓝 (RGB) 值、色调-饱和度-发光度 (HSL) 值、色调-饱和度-值 (HSV) 值或颜色名称。 还可以使用 alpha 通道来指明透明度。
可以使用Color
构造函数创建Color
对象,该构造函数可用于指定灰色阴影、RGB 值或包含透明度的 RGB 值。 在所有情况下,参数都是double
介于 0 到 1 的值。
还可以使用静态方法创建Color
对象:
Color.FromRgb
:用于创建介于 0 和 1 范围之间的double
RGB 值。Color.FromRgb
:用于创建从 0 到 255 的整数 RGB 值。Color.FromRgba
:用于创建包含透明度的double
RGB 值。Color.FromRgba
:用于创建包含透明度的整数 RGB 值。Color.FromHsla
:用于创建包含透明度的double
HSL 值。Color.FromHsv
:用于从 0 到 1 的double
HSV 值。Color.FromHsv
:用于创建从 0 和 255 的整数 HSV 值。Color.FromHsva
:用于创建包含透明度的double
HSV 值。Color.FromHsva
:用于创建包含透明度的整数 HSV 值。Color.FromUint
:用于创建uint
值,计算公式为 (B + 256 * (G + 256 * (R + 256 * A)))。Color.FromHex
:用于创建十六进制数字格式的string
,格式为“#AARRGGBB”、“#RRGGBB”、“#ARGB”或“#RGB”,其中每个字母分别对应 alpha 通道、红色通道、绿色通道和蓝色通道的十六进制数字。
Color
对象一旦创建就不可改变。 可以从下面的属性获取颜色特征:
R
,表示颜色的红色通道。G
,表示颜色的绿色通道。B
,表示颜色的蓝色通道。A
,表示颜色的 alpha 通道。Hue
,表示颜色的色调通道。Saturation
,表示颜色的饱和度通道。Luminosity
,表示颜色的亮度通道。
这些属性都是从 0 到 1 的double
值。
命名的颜色
Color
结构还定义了 240 个公共静态只读字段,用于AliceBlue
等常见颜色。
Color.Accent
Color.Accent
值生成特定于平台(有时为用户可选择)的颜色,它在深色或浅色背景上都是可见的。
Color.Default
Color.Default
值定义Color
,所有通道都设置为 -1,旨在强制实施平台的配色方案。 因此,它在不同平台的不同上下文中具有不同的含义。 默认情况下,平台的配色方案为:
- iOS:浅色背景上深色文本。
- Android:浅色背景上深色文本。
- Windows:浅色背景上深色文本。
Color.Transparent
Color.Transparent
值定义Color
,所有通道都设置为零。
修改颜色
多个实例方法允许通过修改现有颜色来新建颜色:
AddLuminosity
修改提供的增量的亮度以返回Color
。MultiplyAlpha
修改 alpha 以返回Color
,将其乘以提供的 alpha 值。ToHex
返回Color
的十六进制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 中,颜色通常使用其命名值或十六进制表示形式进行引用:
<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" />
注意
使用 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
};