Color 结构
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
从 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.BackgroundColor 和 UISettings.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 (SolidColorBrush 或 LinearGradientBrush) 的组件值。 但是,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、R、G 和 B 的值在 结构中设置为 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 结构的语言支持提供了一种行为,该行为 ToString
将 ARGB 数据属性的值序列化为单个字符串。 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 红色通道值。 |