Поделиться через


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 является определение элемента XAML в качестве ресурса в ResourceDictionary, а затем ссылка на этот ресурс из других частей определений пользовательского интерфейса, стилей или шаблонов с помощью расширения разметки {StaticResource} или расширения разметки {ThemeResource} .

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

Существует несколько разных способов определить SolidColorBrush как встроенное значение пользовательского интерфейса, а не как ресурс.

  • Выберите предопределенный цвет по имени и полагайтесь на "ярлык" 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>
<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 — это наиболее распространенный тип Brush , который используется для многих возможных свойств пользовательского интерфейса, которые используют кисть для заполнения некоторой или всей визуальной области объекта в пользовательском интерфейсе приложения. Примеры некоторых наиболее часто используемых свойств, использующих значение кисти : Control.Background, Control.Foreground, Shape.Fill, Control.BorderBrush, Panel.Background, TextBlock.Foreground.

Для этих свойств часто допустимо значение NULL , которое приводит к тому, что там ничего не отображается. Если элемент отображается в том же пространстве координат, что и другие элементы, значение NULL для свойства, такого как Background , приводит к тому, что этот элемент не регистрируется для целей проверки попадания и определяет, откуда следует искать входное событие. Любые события указателя, жесты и т. д., происходящие в этой точке в пространстве координат пользовательского интерфейса, обнаруживаются только в том случае, если для свойства Brush есть значение, отличное от null, которое влияет на отрисовку для этой точки.

Можно создать SolidColorBrush, использующий значение Transparent , и хотя это визуально не применяет никаких изменений к пользовательскому интерфейсу (он прозрачный), эта точка может быть обнаружена для проверки попадания. Таким образом, это отличается от свойства Brush со значением NULL . Прозрачная кисть может быть полезна для таких методов, как создание областей наложения над элементами пользовательского интерфейса, где требуется перехватить проверку нажатия с помощью таких элементов, как Rectangle, Border или panel. Это можно сделать, если элементы под ним не могут выполнить собственное тестирование попадания, но вы по-прежнему хотите обнаружить события ввода. Дополнительные сведения о тестировании нажатия см. в разделе "Проверка нажатия" статьи Взаимодействие с мышью.

Свойства, использующие кисти, можно анимировать как часть переходов или декоративных анимаций. Обычно не анимировать весь объект SolidColorBrush. Необходимо использовать дискретную анимацию объекта , которая не является ни эффективной, ни эстетической. Вместо этого вы используете нацеливание на свойства, чтобы анимировать только значение Color , используя один из выделенных типов анимации, которые могут анимировать значение Color . Обычно для этого .(SolidColorBrush.Color) требуется быть частью значения Storyboard.TargetProperty . Дополнительные сведения о нацеливание на свойства и о том, как анимировать свойства, использующие SolidColorBrush или другие значения Brush , см. в разделе Раскадровка анимации.

SolidColorBrush — это общий объект, как и другие производные типы Brush , такие как LinearGradientBrush и ImageBrush. Так как он доступен для совместного использования, SolidColorBrush иногда определяется в XAML как ресурс в XAML ResourceDictionary. Преимущество использования общих ресурсов из XAML заключается в том, что вы создаете значение только один раз и применяете его к нескольким свойствам.

Применение значения UIElement.Opacity может изменить цвет свойства SolidColorBrush, примененного к объекту. Значение UIElement.Opacity может быть накопительным в зависимости от макета перекрывающихся объектов. Цвета отображаются ожидаемым образом, только если чистое значение непрозрачности равно 1. Существует также свойство Brush.Opacity , которое может аналогичным образом повлиять на видимый цвет. Brush.Opacity обычно остается со значением по умолчанию 1, если только она не анимируется намеренно для эффекта затухания или исчезания.

Кисти как ресурсы XAML

Каждый из типов кистей , которые можно объявить в XAML (SolidColorBrush, LinearGradientBrush, ImageBrush), предназначен для определения как ресурса, чтобы вы могли повторно использовать эту кисть в качестве ресурса во всем приложении. Синтаксис XAML, показанный для типов кистей , подходит для определения кисти как ресурса. При объявлении кисти в качестве ресурса также требуется атрибут x:Key , который позже будет использоваться для ссылки на этот ресурс из других определений пользовательского интерфейса. Дополнительные сведения о ресурсах XAML и использовании атрибута x:Key см. в статье Справочник по ресурсам ResourceDictionary и XAML.

Преимущество объявления кистей как ресурсов заключается в сокращении количества объектов среды выполнения, необходимых для создания пользовательского интерфейса. Теперь кисть используется как общий ресурс, предоставляющий значения для нескольких частей графа объектов.

Если вы посмотрите на существующие определения шаблонов элементов управления для среда выполнения Windows xaml, вы увидите, что шаблоны широко используют ресурсы кисти. Многие из этих ресурсов являются системными, и они используют расширение разметки {ThemeResource} для ссылки на ресурс, а не расширение разметки {StaticResource}. Дополнительные сведения об использовании кистей системных ресурсов в собственном шаблоне элемента управления XAML см. в разделе Ресурсы темы XAML.

Конструкторы

SolidColorBrush()

Инициализирует новый экземпляр класса SolidColorBrush без цвета.

SolidColorBrush(Color)

Инициализирует новый экземпляр класса SolidColorBrush с указанным Color.

Свойства

Color

Возвращает или задает цвет объекта SolidColorBrush.

ColorProperty

Определяет свойство зависимости Color .

Dispatcher

Всегда возвращается null в приложении Windows App SDK. Вместо этого используйте DispatcherQueue .

(Унаследовано от DependencyObject)
DispatcherQueue

Возвращает объект , DispatcherQueue с которым связан данный объект. DispatcherQueue представляет объект, который может получить доступ к потоку DependencyObject пользовательского интерфейса, даже если код инициируется потоком, не относящегося к пользовательскому интерфейсу.

(Унаследовано от DependencyObject)
Opacity

Возвращает или задает степень непрозрачности кисти.

(Унаследовано от 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)

Регистрирует функцию уведомления для прослушивания изменений определенной DependencyProperty в этом экземпляре DependencyObject .

(Унаследовано от DependencyObject)
SetValue(DependencyProperty, Object)

Задает локальное значение свойства зависимостей для Объекта DependencyObject.

(Унаследовано от DependencyObject)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

Отменяет уведомление об изменениях, которое было ранее зарегистрировано путем вызова метода RegisterPropertyChangedCallback.

(Унаследовано от DependencyObject)

Применяется к

См. также раздел