颜色
Microsoft.Maui.Graphics 命名空间中的 Color 类可用于将颜色指定为红色-绿色-蓝色 (RGB) 值、色调-饱和度-发光度 (HSL) 值、色调-饱和度-值 (HSV) 值或使用颜色名称。 还可以使用 alpha 通道来指明透明度。
Color 对象可使用 Color 构造函数创建,可用于指定灰色阴影、RGB 值或具有透明度的 RGB 值。 构造函数过载接受介于 0 到 1 float
的值、byte
以及 int
值。
还可以使用以下静态方法创建 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 对象一旦创建就不可改变。 颜色的特征可从以下 float
字段获取,范围为 0 到 1:
此外,还可以从以下方法获取颜色特征:
- GetHue,返回表示颜色的色调通道的
float
。 - GetSaturation,返回表示颜色饱和度通道的
float
。 - GetLuminosity,返回表示颜色亮度通道的
float
。
命名的颜色
Colors 类为常见颜色(例如 AntiqueWhite
、MidnightBlue
和 YellowGreen
)定义了 148 个公共静态只读字段。
修改颜色
以下实例方法修改现有颜色来新建颜色:
- AddLuminosity 通过将亮度值添加到提供的 delta 值来返回 Color。
- GetComplementary 返回互补性 Color。
- MultiplyAlpha 通过将 alpha 值乘以提供的
float
值来返回 Color。 - WithAlpha 返回 Color,将 alpha 值替换为提供的
float
值。 - WithHue 返回 Color,将色调值替换为提供的
float
值。 - WithLuminosity 返回 Color,将亮度值替换为提供的
float
值。 - WithSaturation 返回 Color,将饱和度值替换为提供的
float
值。
转换
以下实例方法将 Color 转换为另一种表示形式:
- AsPaint 返回 SolidPaint 对象,其 Color 属性设置为颜色。
- ToHex 返回 Color 的十六进制
string
表示形式。 - ToArgbHex 返回 Color 的 ARGB 十六进制
string
表示形式。 - ToRgbaHex 返回 Color 的 RGBA 十六进制
string
表示形式。 - ToInt 返回 Color 的 ARGB
int
表示形式。 - ToUint 返回 Color 的 ARGB
uint
表示形式。 - ToRgb 将 Color 转换为作为
out
参数返回的 RGBbyte
值。 - ToRgba 将 Color 转换为作为
out
参数返回的 RGBAbyte
值。 - ToHsl 将 Color 转换为作为
out
参数传递的 HSLfloat
值。
示例
在 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
};
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈