SolidColorBrush 類別

定義

使用純色繪製區域。 純色是由 Color 值所定義。

public ref class SolidColorBrush sealed : Brush
/// [Windows.Foundation.Metadata.Activatable(65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.Activatable(Windows.UI.Xaml.Media.ISolidColorBrushFactory, 65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.UI.Xaml.Markup.ContentProperty(Name="Color")]
class SolidColorBrush final : Brush
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.UI.Xaml.Markup.ContentProperty(Name="Color")]
/// [Windows.Foundation.Metadata.Activatable(Windows.UI.Xaml.Media.ISolidColorBrushFactory, 65536, "Windows.Foundation.UniversalApiContract")]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
class SolidColorBrush final : Brush
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.Activatable(typeof(Windows.UI.Xaml.Media.ISolidColorBrushFactory), 65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.UI.Xaml.Markup.ContentProperty(Name="Color")]
public sealed class SolidColorBrush : Brush
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.UI.Xaml.Markup.ContentProperty(Name="Color")]
[Windows.Foundation.Metadata.Activatable(typeof(Windows.UI.Xaml.Media.ISolidColorBrushFactory), 65536, "Windows.Foundation.UniversalApiContract")]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
public sealed class SolidColorBrush : Brush
Public NotInheritable Class SolidColorBrush
Inherits Brush
<SolidColorBrush .../>
-or-
<SolidColorBrush>colorString</SolidColorBrush>
- or -
<SolidColorBrush Color="predefinedColorName"/>
- or -
<SolidColorBrush Color="#rgb"/>
- or -
<SolidColorBrush Color="#argb"/>
- or -
<SolidColorBrush Color="#rrggbb"/>
- or -
<SolidColorBrush Color="#aarrggbb"/>
- or -
<SolidColorBrush Color="sc#scR,scG,scB"/>
- or -
<SolidColorBrush Color="sc#scA,scR,scG,scB"/>
繼承
Object Platform::Object IInspectable DependencyObject Brush SolidColorBrush
屬性

Windows 需求

裝置系列
Windows 10 (已於 10.0.10240.0 引進)
API contract
Windows.Foundation.UniversalApiContract (已於 v1.0 引進)

範例

使用 SolidColorBrush 最常見的方法是在ResourceDictionary中將 XAML 元素定義為資源,然後使用{StaticResource} 標記延伸或 {ThemeResource} 標記延伸,稍後從 UI 定義、樣式或範本的其他部分參考該資源。

<ResourceDictionary>
...
    <SolidColorBrush x:Key="BlockBackgroundBrush" Color="#FF557EB9"/>
...
</ResourceDictionary>
<Border Background="{StaticResource BlockBackgroundBrush}" 
    Width="80" Height="80"/>

有數種不同的方式可將 SolidColorBrush 定義為內嵌 UI 值,而不是資源:

  • 依名稱選取預先定義的色彩,並依賴此色彩會在剖析時建立 SolidColorBrush 的 XAML「快捷方式」。 例如,您可以將RectangleFill設定為 「Red」,如下所示:
<Canvas
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

  <!-- This rectangle's fill is painted with a red SolidColorBrush,
       described using a named color. -->
  <Rectangle Width="100" Height="100" Fill="Red" />
</Canvas>
  • 使用十六進位 RGB 色彩代碼,從 24 位色彩範圍選取自訂色彩,其中包含所選數量的紅色、綠色和藍色:
<Canvas
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

  <!-- This rectangle's fill is painted with a Red SolidColorBrush,
       described using an RGB-style hex color code. -->
  <Rectangle Width="100" Height="100" Fill="#FF0000" />
</Canvas>
  • 您也可以將所需的屬性設定為十六進位格式的 ARGB 色彩代碼,以指定具有指定不透明度的自訂色彩:
<Canvas
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

  <!-- This rectangle's fill is painted with a fully opaque red SolidColorBrush,
       described using an ARGB style hex code. -->
  <Rectangle Width="100" Height="100" Fill="#FFFF0000" />
</Canvas>

您可以從 Colors 結構具現化 SolidColorBrush 物件,在程式碼後置中建立純色筆刷。

SolidColorBrush greenBrush = new SolidColorBrush(Colors.Green);
Windows::UI::Xaml::Media::SolidColorBrush greenBrush{ Windows::UI::Colors::Green() };
auto greenBrush = ref new SolidColorBrush(Colors::Green);

定義新 SolidColorBrush 物件的另一種方式是使用 FromArgb 靜態公用程式方法。 如果您想要的色彩沒有具名 的 Colors 值,這會很有用。

SolidColorBrush myBrush = new SolidColorBrush(Color.FromArgb(255, 20, 20, 90));
Windows::UI::Xaml::Media::SolidColorBrush myBrush{ Windows::UI::ColorHelper::FromArgb(255, 90, 200, 90) };
auto myBrush = ref new SolidColorBrush(ColorHelper::FromArgb(255, 90, 200, 90));

備註

SolidColorBrush 是最常用於許多可能 UI 屬性的 Brush 類型,這些屬性會使用 Brush 在應用程式 UI 中填滿部分或所有物件的視覺區域。 使用 Brush 值之一些最常用的屬性範例包括: Control.BackgroundControl.ForegroundShape.FillControl.BorderBrushPanel.BackgroundTextBlock.Foreground

對於這些屬性,通常可接受 Null 值,而且結果不會在該處呈現任何內容。 如果專案出現在與其他元素相同的座標空間中,則 Background之類的屬性的Null值會導致該元素不註冊進行點擊測試,並判斷輸入事件的來源。 UI 座標空間中該點上發生的任何指標事件、手勢等等,只有在Brush屬性的值以外的值會影響該點的轉譯時,才能偵測到。

您可以建立使用 透明 值的 SolidColorBrush,雖然這不會以視覺化方式將任何變更套用至 UI (它是透明的) ,但該點可偵測到以進行點擊測試。 因此,這與具有Null值的Brush屬性不同。 透明筆刷對於在 UI 元素上建立重迭區域等技術很有用,您可以在其中使用矩形框線或面板等元素攔截點擊測試。 如果下方的元素無法執行自己的點擊測試,但您仍想要偵測輸入事件,您可能會這麼做。 如需點擊測試的詳細資訊,請參閱 滑鼠互動的一節。

使用筆刷的屬性可以在轉換或裝飾動畫中產生動畫效果。 您通常不會建立整個 SolidColorBrush 物件的動畫效果,您必須使用離散 的 Object 動畫,而且效率也不美觀。 相反地,您會使用屬性目標,只以 Color 值建立動畫效果,使用其中一種專用動畫類型來產生 Color 值動畫效果。 這通常牽涉到屬於 .(SolidColorBrush.Color)Storyboard.TargetProperty 值的一部分。 如需屬性目標的詳細資訊,以及如何以動畫顯示使用 SolidColorBrush 或其他 Brush 值的屬性,請參閱 分鏡腳本動畫

SolidColorBrush 是可共用的物件,如同LinearGradientBrushImageBrush等其他衍生的Brush類型。 因為它可共用 SolidColorBrush 有時會在 XAML 中定義為 XAML ResourceDictionary中的資源。 從 XAML 使用可共用資源的優點是,您只會建立一次值,並將其套用至多個屬性。

套用 UIElement.Opacity 值可以變更套用至物件的 SolidColorBrush 屬性的色彩外觀。 UIElement.Opacity值可以累加,視重迭的物件配置而定。 只有在 net Opacity 值為 1 時,色彩才會如預期般顯示。 另外還有 Brush.Opacity 屬性,可能會類似地影響明顯的色彩。 Brush.Opacity 通常會保留其預設值 1,除非刻意以動畫顯示淡入或淡出效果。

XAML 資源形式的筆刷

每個可以在 XAML (SolidColorBrush、LinearGradientBrushImageBrush) 中宣告的Brush類型,都是要定義為資源,以便在整個應用程式中重複使用該筆刷作為資源。 針對 Brush類型顯示的 XAML 語法適用于將筆刷定義為資源。 當您將筆刷宣告為資源時,您也需要 x:Key 屬性 ,稍後您將用來從其他 UI 定義參考該資源。 如需 XAML 資源及如何使用 x:Key 屬性的詳細資訊,請參閱 ResourceDictionary 和 XAML 資源參考

將筆刷宣告為資源的優點是可減少建構 UI 所需的執行時間物件數目:筆刷現在會共用為物件圖形的多個部分提供值的通用資源。

如果您查看 xaml 控制項的現有控制項範本定義Windows 執行階段,您會看到範本會廣泛地使用筆刷資源。 其中許多資源都是系統資源,而且會針對資源參考使用 {ThemeResource} 標記延伸 ,而不是 {StaticResource} 標記延伸。 如需如何在您自己的控制項範本 XAML 中使用系統資源筆刷的詳細資訊,請參閱 XAML 主題資源

建構函式

SolidColorBrush()

初始化 SolidColorBrush 類別的新實例,不含色彩。

SolidColorBrush(Color)

使用指定的Color,初始化SolidColorBrush類別的新實例。

屬性

Color

取得或設定這個 SolidColorBrush 的色彩。

ColorProperty

識別 Color 相依性屬性。

Dispatcher

取得與此物件相關聯的 CoreDispatcherCoreDispatcher代表可以存取 UI 執行緒上DependencyObject的功能,即使程式碼是由非 UI 執行緒起始也一樣。

(繼承來源 DependencyObject)
Opacity

取得或設定 Brush不透明度的程度。

(繼承來源 Brush)
RelativeTransform

取得或設定使用相對座標套用到筆刷的轉換。

(繼承來源 Brush)
Transform

取得或設定套用到筆刷的轉換。

(繼承來源 Brush)

方法

ClearValue(DependencyProperty)

清除相依性屬性的本機值。

(繼承來源 DependencyObject)
GetAnimationBaseValue(DependencyProperty)

傳回針對相依性屬性所建立的任何基底值,如果動畫未使用中,則會套用。

(繼承來源 DependencyObject)
GetValue(DependencyProperty)

DependencyObject傳回相依性屬性的目前有效值。

(繼承來源 DependencyObject)
PopulatePropertyInfo(String, AnimationPropertyInfo)

定義可以產生動畫效果的屬性。

(繼承來源 Brush)
PopulatePropertyInfoOverride(String, AnimationPropertyInfo)

在衍生類別中覆寫時,定義可產生動畫效果的屬性。

(繼承來源 Brush)
ReadLocalValue(DependencyProperty)

如果已設定本機值,則會傳回相依性屬性的本機值。

(繼承來源 DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

註冊通知函式,以接聽此DependencyObject實例上特定DependencyProperty的變更。

(繼承來源 DependencyObject)
SetValue(DependencyProperty, Object)

DependencyObject上設定相依性屬性的本機值。

(繼承來源 DependencyObject)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

取消先前透過呼叫 RegisterPropertyChangedCallback註冊的變更通知。

(繼承來源 DependencyObject)

適用於

另請參閱