颜色

Browse sample.浏览示例

Microsoft.Maui.Graphics 命名空间中的 Color 类可用于将颜色指定为红色-绿色-蓝色 (RGB) 值、色调-饱和度-发光度 (HSL) 值、色调-饱和度-值 (HSV) 值或使用颜色名称。 还可以使用 alpha 通道来指明透明度。

Color 对象可使用 Color 构造函数创建,可用于指定灰色阴影、RGB 值或具有透明度的 RGB 值。 构造函数过载接受介于 0 到 1 float 的值、byte 以及 int 值。

注意

默认 Color 构造函数创建黑色 Color 对象。

还可以使用以下静态方法创建 Color 对象:

  • Color.FromRgb 来自范围从 0 到 1 的 float RGB 值。
  • Color.FromRgb 来自范围从 0 到 1 的 double RGB 值。
  • Color.FromRgb 来自范围从 0 到 255 的 byte RGB 值。
  • Color.FromInt 来自范围从 0 到 255 的 int RGB 值。
  • Color.FromRgba 来自范围从 0 到 1 的 float RGBA 值。
  • Color.FromRgba 来自范围从 0 到 1 的 double RGBA 值。
  • Color.FromRgba 来自范围从 0 到 255 的 byte RGBA 值。
  • Color.FromRgba 来自范围从 0 到 255 的 int RGBA 值。
  • Color.FromRgba 来自基于 string 的十六进制值,格式为“#AARRGGBB”、“#RRGGBB”、“#ARGB”或“#RGB”,其中每个字母分别对应 alpha、红色、绿色和蓝色通道的十六进制数字。
  • Color.FromHsla 来自 float HSLA 值。
  • Color.FromHsla 来自 double HSLA 值。
  • Color.FromHsv 来自范围从 0 到 1 的 float HSV 值。
  • Color.FromHsv 来自范围从 0 到 255 的 int HSV 值。
  • Color.FromHsva 来自 float HSVA 值。
  • Color.FromHsva 来自 int HSV 值。
  • Color.FromInt 来自 int 值,计算公式为 (B + 256 * (G + 256 * (R + 256 * A)))。
  • Color.FromUint 来自 uint 值,计算公式为 (B + 256 * (G + 256 * (R + 256 * A)))。
  • Color.FromArgb 来自基于 string 的十六进制值,格式为“#AARRGGBB”、“#RRGGBB”、“#ARGB”或“#RGB”,其中每个字母分别对应 alpha、红色、绿色和蓝色通道的十六进制数字。

注意

除了上面列出的方法之外,Color 类还具有 ParseTryParse 方法,用于从 string 参数创建 Color 对象。

Color 对象一旦创建就不可改变。 颜色的特征可从以下 float 字段获取,范围为 0 到 1:

  • Red,表示颜色的红色通道。
  • Green,表示颜色的绿色通道。
  • Blue,表示颜色的蓝色通道。
  • Alpha,表示颜色的 alpha 通道。

此外,还可以从以下方法获取颜色特征:

  • GetHue,返回表示颜色的色调通道的 float
  • GetSaturation,返回表示颜色饱和度通道的 float
  • GetLuminosity,返回表示颜色亮度通道的 float

命名的颜色

Colors 类为常见颜色(例如 AntiqueWhiteMidnightBlueYellowGreen)定义了 148 个公共静态只读字段。

修改颜色

以下实例方法修改现有颜色来新建颜色:

转换

以下实例方法将 Color 转换为另一种表示形式:

  • AsPaint 返回 SolidPaint 对象,其 Color 属性设置为颜色。
  • ToHex 返回 Color 的十六进制 string 表示形式。
  • ToArgbHex 返回 Color 的 ARGB 十六进制 string 表示形式。
  • ToRgbaHex 返回 Color 的 RGBA 十六进制 string 表示形式。
  • ToInt 返回 Color 的 ARGB int 表示形式。
  • ToUint 返回 Color 的 ARGB uint 表示形式。
  • ToRgbColor 转换为作为 out 参数返回的 RGB byte 值。
  • ToRgbaColor 转换为作为 out 参数返回的 RGBA byte 值。
  • ToHslColor 转换为作为 out 参数传递的 HSL float 值。

示例

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

在 C# 中,颜色通常使用其命名值或其静态方法进行引用:

Label red    = new Label { Text = "Red",    TextColor = Colors.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 AliceBlue, iOS=MidnightBlue}"
                   IsRunning="True" />

等效 C# 代码如下:

ActivityIndicator activityIndicator = new ActivityIndicator
{
    Color = DeviceInfo.Platform == DevicePlatform.iOS ? Colors.MidnightBlue : Colors.AliceBlue,
    IsRunning = true
};