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 的最常见方法是将 XAML 元素定义为 ResourceDictionary 中的资源,然后稍后使用 {StaticResource} 标记扩展或 {ThemeResource} 标记扩展从 UI 定义、样式或模板的其他部分引用该资源。

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

可通过多种不同的方法将 SolidColorBrush 定义为内联 UI 值而不是资源:

  • 按名称选择预定义颜色,并依赖于 XAML“快捷方式”,此颜色将在分析时创建 SolidColorBrush。 例如,可以将矩形填充设置为“红色”,如下所示:
<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 是最常见的 Brush 类型,用于许多可能的 UI 属性,这些属性使用 Brush 填充应用 UI 中对象的部分或全部可视区域。 使用 Brush 值的一些最常用的属性的示例包括: Control.BackgroundControl.ForegroundShape.FillControl.BorderBrushPanel.BackgroundTextBlock.Foreground

对于这些属性, null 值通常是可以接受的,并且结果没有呈现任何内容。 如果该元素与其他元素出现在同一坐标空间中,则属性(如 Background)的 null 值会导致该元素不注册以进行命中测试,并确定输入事件的源位置。 仅当 Brush 属性值为 null 以外的值会影响该点的呈现时,才能检测到 UI 坐标空间中该点上发生的任何指针事件、手势等。

可以创建使用 透明 值的 SolidColorBrush,尽管这不会在视觉上将任何更改应用于 UI (它是透明的) ,但该点可检测用于命中测试目的。 因此,这与具有 null 值的 Brush 属性不同。 透明画笔可用于使用矩形、边框或面板等元素截获命中测试的 UI 元素上的覆盖区域等技术。 如果下面的元素无法执行自己的命中测试,但仍希望检测输入事件,则可以执行此操作。 有关命中测试的详细信息,请参阅 鼠标交互的“命中测试”部分。

使用画笔的属性可以作为过渡或装饰动画的一部分进行动画处理。 通常不会对整个 SolidColorBrush 对象进行动画处理,必须使用离散 的对象 动画,这既不高效也不美观。 相反,使用属性目标来仅对 Color 值进行动画处理,使用可对 Color 值进行动画处理的专用动画类型之一。 这通常涉及是 .(SolidColorBrush.Color)Storyboard.TargetProperty 值的一部分。 有关属性目标以及如何使用 SolidColorBrush 或其他 Brush 值对属性进行动画处理的详细信息,请参阅 情节提要动画

SolidColorBrush 是一个可共享的对象,其他派生类型的 Brush (如 LinearGradientBrushImageBrush)也是。 因为它是可共享的,SolidColorBrush 有时在 XAML 中定义为 XAML ResourceDictionary 中的资源。 使用 XAML 中的可共享资源的优点是,只需创建一次值并将其应用于多个属性。

应用 UIElement.Opacity 值可以更改应用于对象的 SolidColorBrush 属性的颜色外观。 UIElement.Opacity 值可以是累积值,具体取决于重叠对象的布局。 仅当净 不透明度 值为 1 时,颜色才会按预期显示。 还有 一个 Brush.Opacity 属性,可以类似地影响明显的颜色。 Brush.Opacity 通常保留其默认值 1,除非为淡入或淡出效果特意对其进行动画处理。

画笔作为 XAML 资源

可在 XAML (SolidColorBrush、LinearGradientBrushImageBrush) 中声明的每个画笔类型都旨在定义为资源,以便你可以在整个应用中重复使用该画笔作为资源。 为 Brush 类型显示的 XAML 语法适用于将画笔定义为资源。 将画笔声明为资源时,还需要一个 x:Key 属性 ,稍后将使用该属性从其他 UI 定义中引用该资源。 有关 XAML 资源和如何使用 x:Key 属性的详细信息,请参阅 ResourceDictionary 和 XAML 资源引用

将画笔声明为资源的优点是减少了构造 UI 所需的运行时对象数:画笔现在共享为对象图的多个部分提供值的通用资源。

如果查看Windows 运行时 XAML 控件的现有控件模板定义,你将看到模板广泛使用画笔资源。 其中许多资源是系统资源,它们使用 {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)

适用于

另请参阅