Color 結構

定義

根據 Alpha、紅、綠、藍色板描述色彩。

C#
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
public struct Color
XAML
<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 資源時所需的屬性。

XAML
<Application.Resources>
  ...
  <Color x:Key="SlightlyOffBlue">#FF0000E8</Color>
</Application.Resources>
XAML
<!-- 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 範例的來源。

C#
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.BackgroundColorUISettings.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 (SolidColorBrushLinearGradientBrush) 的元件值。 不過, 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 常數進行解譯,而 ARGB 的值會在 結構中設定為代表該色彩的 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 紅色通道值。

適用於

產品 版本
WinRT Build 10240, Build 10586, Build 14383, Build 15063, Build 16299, Build 17134, Build 17763, Build 18362, Build 19041, Build 20348, Build 22000, Build 22621, Build 26100

另請參閱