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 值定義為資源的語法。 如果您定義的色彩不是 Color 類別中提供的值之一,而且您想要使用 XAML 資源系統強制您在應用程式 UI 的多個區域中使用相同的色彩,您通常只需要這麼做。 請注意 x:Key 屬性,當您定義 XAML 資源時所需的屬性。
<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 的 Byte 類型。
色彩值用於這些功能和案例:
- 開始畫面的色彩和一般 UI (例如 SecondaryTile.BackgroundColor 和 UISettings.UIElementColor) 。 這些可以在 JavaScript 中使用。
- Windows 8 筆跡系統的色彩值。 具體而言, InkDrawingAttributes.Color。 這可用於 JavaScript。
- 使用 C++、C# 或 Visual Basic 的 XAML UI 和 UWP app 色彩值,特別是筆刷。 這些 API 無法在 JavaScript 中使用。
- 在 Windows.UI.Text 命名空間中定義用於代表文字之介面的色彩值。 這些 API 無法在 JavaScript 中使用。
色彩值和 XAML 定義
Color 最常見的應用程式是使用 C++、C# 或 Visual Basic 及其 XAML UI 定義,將 UI 元素中的色彩相關屬性定義為 UWP 應用程式的一部分。
各種預先定義的 Color 值可作為 Colors 類別的靜態屬性。 這些屬性適用于在程式碼中設定 Color 值,以符合 XAML 中用來設定具名 Color 的屬性字串表單。 例如, Colors.AliceBlue 屬性會從 XAML 使用 <SolidColorBrush Color="AliceBlue" />
方式傳回等於 Color 的 Color。 您也可以使用 Colors 值來與 Color 相等比較。
在大部分的 XAML UI 案例中,Color 不會直接當做 UIElement的屬性值使用。 相反地,Color 會做為 Brush (SolidColorBrush 或 LinearGradientBrush) 的元件值。 不過, Brush 類型會啟用 XAML 速記,可讓您使用具名色彩字串設定 Brush 類型的屬性值,或可剖析成 ARGB 格式的格式字串。 例如,您可以使用 之類的 <TextBlock Foreground="Cyan" />
語法來設定Brush類型值TextBlock.Foreground。 此語法會隱含地建立新的 SolidColorBrush ,其 Color 值等於 Cyan ,以填滿該元素的 Brush類型值 TextBlock.Foreground 。 如需在 XAML 中使用筆刷和色彩的詳細資訊,請參閱 使用筆刷。
如果您在 XAML 中經常使用相同的色彩筆刷,您應該將 SolidColorBrush 定義為資源,而不是使用內嵌隱含建立新值,因為這更有效率。 如需詳細資訊,請參閱 優化您的 XAML 標記 或 ResourceDictionary 和 XAML 資源參考。 您可能也想要使用系統色彩,這些色彩可以做為系統所定義主題的合併資源來存取。 請參閱 XAML 主題資源。
另外還有一些採用直接 Color 值的 XAML 屬性。 這些大部分都支援以動畫顯示 筆刷上存在的 Color 值。 Windows 執行階段支援內插補點邏輯,讓您可以從一個 Color 動畫動畫到另一個/ 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 具有 靜態方法 FromArgb ,可作為 Color 值產生器。 此外,Color 的資料成員也會公開為讀寫屬性。
如果您是使用 C++ 進行程式設計,Visual C++ 元件延伸模組 (C++/CX) 或 WRL,則只有資料成員欄位會以 Color 的成員的形式存在,而且您無法使用成員資料表中列出的公用程式方法或屬性。 C++ 程式碼可以在ColorHelper類別和Platform::Object方法上使用對等的 FromArgb方法。
Color 的 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 是未修改的 Platform::Object::ToString行為,可提供IReference) 方塊之類型 (標記法,而且不會指出值。
欄位
A |
取得或設定色彩的 sRGB Alpha 色板值。 |
B |
取得或設定色彩的 sRGB 藍色色板值。 |
G |
取得或設定色彩的 sRGB 綠色通道值。 |
R |
取得或設定色彩的 sRGB 紅色通道值。 |