SolidColorBrush 類別

定義

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

public ref class SolidColorBrush sealed : Brush
/// [Microsoft.UI.Xaml.Markup.ContentProperty(Name="Color")]
/// [Windows.Foundation.Metadata.Activatable(Microsoft.UI.Xaml.Media.ISolidColorBrushFactory, 65536, "Microsoft.UI.Xaml.WinUIContract")]
/// [Windows.Foundation.Metadata.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class SolidColorBrush final : Brush
[Microsoft.UI.Xaml.Markup.ContentProperty(Name="Color")]
[Windows.Foundation.Metadata.Activatable(typeof(Microsoft.UI.Xaml.Media.ISolidColorBrushFactory), 65536, "Microsoft.UI.Xaml.WinUIContract")]
[Windows.Foundation.Metadata.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
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
屬性

範例

使用 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>
<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>
  • 藉由指定紅色、綠色和藍色的數量,以在32位調色盤內建立色彩,以結合成單一純色。
<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>
<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>
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

一律會在 Windows 應用程式 SDK 應用程式中傳回null。 請改用 DispatcherQueue

(繼承來源 DependencyObject)
DispatcherQueue

DispatcherQueue取得與這個 物件相關聯的 。 DispatcherQueue表示即使程式代碼是由非 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)

適用於

另請參閱