Color 结构

定义

从 alpha、红色、绿色和蓝色通道角度描述一种颜色。

public value class Color
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
struct Color
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
public struct Color
var color = {
a : /* Your value */,
r : /* Your value */,
g : /* Your value */,
b : /* Your value */
}
Public Structure Color
<Color ...>predefinedColor</Color>
- or -
<Color ...>#rgb</Color>
- or -
<Color ...>#argb</Color>
- or -
<Color ...>#rrggbb</Color>
- or -
<Color ...>#aarrggbb</Color>
- or -
<Color ...>sc#scR,scG,scB</Color>
- or -
<Color ...>sc#scA,scR,scG,scB</Color>
- or -
<object property="predefinedColor"/>
- or -
<object property="#rgb"/>
- or -
<object property="#argb"/>
- or -
<object property="#rrggbb"/>
- or -
<object property="#aarrggbb"/>
- or -
<object property="sc#scR,scG,scB"/>
- or -
<object property="sc#scA,scR,scG,scB"/>
继承
Color
属性

Windows 要求

设备系列
Windows 10 (在 10.0.10240.0 中引入)
API contract
Windows.Foundation.UniversalApiContract (在 v1.0 中引入)

示例

下面是用于在 XAML ResourceDictionary 中将 Color 值定义为资源的语法。 通常,如果你定义的颜色不是在 Colors 类中作为值提供的 250 多种颜色中的一种,并且你想要将 XAML 资源系统用作在应用 UI 的多个区域中使用相同的颜色的强制措施,则你通常才需要此颜色。 请注意定义 XAML 资源时所需的 x:Key 属性

<Application.Resources>
  ...
  <Color x:Key="SlightlyOffBlue">#FF0000E8</Color>
</Application.Resources>
<!-- example reference to the resource, make sure is a property that is really Color not Brush-->
      <ColorAnimation Storyboard.TargetName="mySolidColorBrush"
        Storyboard.TargetProperty="Color" To="{StaticResource SlightlyOffBlue}" Duration="0:0:4"/>

此代码显示 SolidColorBrush 和 Color 值的双向转换器。 这对于数据绑定方案非常有用,因为它实现了数据绑定的 Converter 属性可以使用的 IValueConverter 模式,然后你可以将 SolidColorBrush 源绑定到 Color 目标,反之亦然。 若要在上下文中查看此代码,请参阅 SwapChainPanel 示例的源。

class BrushConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        return new SolidColorBrush((value is Color) ? (Color)value : Colors.Black);
    }

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        return (value is SolidColorBrush) ? (value as SolidColorBrush).Color : Colors.Black;
    }
}

注解

Color 是一种Windows 运行时结构,表示具有四个通道的颜色:A (alpha) 、R (红色) 、G (绿色) 、B (蓝色) 。 每个值都存储为值为 0-255 的 字节 类型。

颜色值用于以下功能和方案:

  • 开始屏幕和常规 UI (的颜色,例如 SecondaryTile.BackgroundColorUISettings.UIElementColor) 。 这些可以在 JavaScript 中使用。
  • Windows 8 墨迹系统的颜色值。 具体而言, 是 InkDrawingAttributes.Color。 这可以在 JavaScript 中使用。
  • 使用 C++、C# 或 Visual Basic 的 XAML UI 和 UWP 应用的颜色值,尤其是画笔。 这些 API 不能在 JavaScript 中使用。
  • Windows.UI.Text 命名空间中定义用于表示文本的接口的颜色值。 这些 API 不能在 JavaScript 中使用。

颜色值和 XAML 定义

Color 最常见的应用是使用 C++、C# 或 Visual Basic 及其 XAML UI 定义将 UI 元素中的颜色相关属性定义为 UWP 应用的一部分。

各种预定义的 Color 值可用作 Colors 类上的静态属性。 这些属性可用于在代码中设置 Color 值,这些值与 XAML 中用于设置命名 Color 的属性字符串形式相匹配。 例如, Colors.AliceBlue 属性返回一个 Color,该颜色等于 Xaml 用法 <SolidColorBrush Color="AliceBlue" />中的 Color。 还可以使用 Colors 值对 Color 进行相等性比较。

在大多数 XAML UI 方案中,Color 不直接用作 UIElement 的属性值。 相反,Color 用作 Brush (SolidColorBrushLinearGradientBrush) 的组件值。 但是,Brush 类型启用 XAML 速记,使你可以使用命名颜色字符串或可分析为 ARGB 格式的格式字符串设置 Brush 类型的属性值。 例如,可以使用 等<TextBlock Foreground="Cyan" />语法设置 Brush 类型值 TextBlock.Foreground。 此语法隐式创建一个新的 SolidColorBrush ,其 Color 值等于 Cyan ,用于填充该元素的 Brush 类型值 TextBlock.Foreground 。 有关在 XAML 中使用画笔和颜色的详细信息,请参阅 使用画笔

如果经常在 XAML 中使用相同的颜色画笔,则应将 SolidColorBrush 定义为资源,而不是使用内联隐式创建新值,因为这样做更有效。 有关详细信息,请参阅 优化 XAML 标记ResourceDictionary 和 XAML 资源引用。 你可能还希望使用系统颜色,这些颜色可以作为系统定义的主题的合并资源进行访问。 请参阅 XAML 主题资源

还有一些 XAML 属性采用直接 Color 值。 这些主要支持对 画笔上存在的 Color 值进行动画处理。 Windows 运行时支持内插逻辑,以便你可以在“/”动画中对另一种 Color 进行动画处理,动画将在动画运行时使用内插的 Color 值。 有关详细信息,请参阅情节提要动画

有关 XAML 语法的说明

如果使用“#”标记以十六进制形式指定颜色值,则十六进制值将作为 0 到 255 之间的值存储在结构中,而不是作为原始十六进制字符串存储。 如果使用“sc#”标记,则值也存储为 0 到 255 之间的值,而不是原始值 0 到 1。

命名颜色的字符串基于关联的 Colors 常量进行解释,A、RGB 的值在 结构中设置为 0 到 255 之间的值,这些值代表该颜色。

XAML 对象元素用法 (与初始化文本) 对于在 XAML ResourceDictionary 中将 Color 声明为资源很有用。 有关详细信息,请参阅 ResourceDictionary 和 XAML 资源参考

下表说明了 XAML 语法部分中显示的颜色值占位符。

注释
predefinedColor Colors 类预定义 的颜色之一。 有关列表,请参阅 的成员 Colors 。 这些是静态属性。 仅指定颜色名称,例如 Transparent。 不要在字符串中包含静态类限定符:例如,“Colors.Transparent”不在 XAML 中分析。
<Grid Background="Blue"/>, <Color>Blue</Color>
rgb 三个字符的十六进制值。 第一个字符指定颜色的 R 值,第二个字符指定 G 值,第三个字符指定 B 值。 例如,00F。
<Grid Background="#00F"/>, <Color>#00F</Color>
argb 四个字符的十六进制值。 第一个字符指定颜色的 A 值,第二个字符指定其 R 值,第三个字符指定 G 值,第四个字符指定其 B 值。 例如,F00F。
<Grid Background="#F00F"/>, <Color>#F00F</Color>
rrggbb 六个字符的十六进制值。 前两个字符指定颜色的 R 值,接下来的两个字符指定其 G 值,最后两个字符指定其 B 值。 例如,0000FF。
<Grid Background="#0000FF"/>, <Color>#0000FF</Color>
aarrggbb 一个八个字符的十六进制值。 前两个字符指定颜色的 A 值,接下来的两个字符指定其 R 值,接下来的两个字符指定其 G 值,最后两个字符指定其 B 值。 例如,FF0000FF。
<Grid Background="#FF0000FF"/>, <Color>#FF0000FF</Color>
Sca 颜色的 ScA (alpha) 值作为介于 0 和 1 之间的值。
<Grid Background="sc#1,0,0,1"/>, <Color>sc#1,0,0,1</Color>
Scr 颜色的 ScR (红色) 值作为介于 0 和 1 之间的值。
scG 颜色的 ScG (绿色) 值作为介于 0 和 1 之间的值。
渣 打 银行 颜色的 ScB (蓝色) 值作为介于 0 和 1 之间的值。

投影和颜色的成员

如果使用 Microsoft .NET 语言 (C# 或 Microsoft Visual Basic) 则 Color 具有用作 Color 值生成器的 静态方法 FromArgb 。 此外,Color 的数据成员将作为读写属性公开。

如果使用 C++ 进行编程,Visual C++ 组件扩展 (C++/CX) 或 WRL,则只有数据成员字段作为 Color 的成员存在,并且不能使用成员表中列出的实用工具方法或属性。 C++ 代码可以在 ColorHelper 类上使用等效的 FromArgb 方法和 Platform::Object 方法。

颜色的 ToString 行为

对于 C# 和 Microsoft Visual Basic,Color 结构的语言支持提供了一种行为,该行为 ToStringARGB 数据属性的值序列化为单个字符串。 Color 值的字符串表示形式类似于 XAML 属性字符串语法,用于在标记中指定 Color 值。 它是设计器工具最常使用的语法,用于指定 (非命名) Color。 字符串的形式#AARRGGBB为 ,其中每个字母对将其中一个颜色通道表示为 和 FF之间的00值。 每个字母对都解释为十六进制值,因此表示一个介于 0 和 255 之间的值。 字符串始终以哈希 (#) 开头。 例如,颜色的字符串形式,其中 A=255, R=0, G=128, B=255 为“#FF0080FF”。 对于命名颜色,你获取序列化的字符串,而不是常量名称;例如,在 Colors.Blue 上调用 ToString 会提供“#FF0000FF”。

注意

Visual C++ 组件扩展 (C++/CX) 不使用 Color 的非数据成员,并且不启用从 ToString()返回的此形式的字符串。 ToString()从 Visual C++ 组件扩展 (C++/CX) Color 返回的值是未修改的平台::Object::ToString 行为,它提供由 IReference) 装箱 (类型的表示形式,并且不指示该值。

字段

A

获取或设置颜色的 sRGB alpha 通道值。

B

获取或设置颜色的 sRGB 蓝色通道值。

G

获取或设置颜色的 sRGB 绿色通道值。

R

获取或设置颜色的 sRGB 红色通道值。

适用于

另请参阅