Кисти
27WPF --- Графика и анимация WPF --- Кисти
Кисти заполняют области — будь то фон, передний план или граница элемента, или штрих фигуры. Простейшим типом кисти является SolidColorBrush, которая рисует сплошным цветом. Когда в XAML-разметке устанавливается свойство Stroke или Fill фигуры, в действие вступает кисть SolidColorBrush. Ниже перечислено несколько фундаментальных фактов, связанных с кистями:
Кисти поддерживают уведомления об изменениях, поскольку они унаследованы от Freezable. В результате при изменении кисти любой элемент, использующий ее, автоматически перерисовывает себя.
Кисти поддерживают частичную прозрачность. Все, что понадобится сделать — это модифицировать свойство Opacity, чтобы проявился фон.
Класс SystemBrushes предоставляет доступ к кистям, которые используют цвета, определенные в системных настройках Windows для текущего компьютера.
Хотя кисть SolidColorBrush, безусловно, удобна, существует несколько других классов кистей, унаследованных от System.Windows.Media.Brush, которые предлагают ряд экзотических эффектов. Все они перечислены ниже:
- SolidColorBrush
Рисует область с использованием одного сплошного цвета
- RadialGradientBrush
Рисует область с использованием радиального градиентного заполнения, подобного линейному, но с тем отличием, что переход формируется в радиальном направлении от центральной точки
- LinearGradientBrush
Рисует область с использованием линейного градиентного заполнения, представляющего собой плавный переход от одного цвета к другому (и дополнительно к следующему, потом еще к одному и т.д.)
- ImageBrush
Рисует область с использованием графического изображения, которое может растягиваться, масштабироваться или многократно повторяться
- DrawingBrush
Рисует область с использованием объект Drawing. Этот объект может включать определенные вами фигуры и растровые изображения
- VisualBrush
Рисует область с использованием объекта Visual. Поскольку все элементы WPF наследуются от класса Visual, эту кисть можно применять для копирования части пользовательского интерфейса (такого как поверхность кнопки) в другую область. Удобно для создания забавных эффектов вроде частичного отражения
- BitmapCacheBrush
Рисует область с использованием кэшированного содержимого из объекта Visual. Это делает его похожим на VisualBrush, но этот класс более эффективен, если графическое содержимое должно повторно использоваться во множестве мест либо часто перерисовываться
SolidColorBrush
Объекты SolidColorBrush уже демонстрировались в работе с элементами управления. В большинстве элементов управления установка свойства Foreground задает цвет текста, а свойства Background — цвет пространства вокруг него. Фигуры используют сходные, но другие свойства: Stroke — для рисования контура фигуры и Fill — для рисования ее внутренности.
Как было показано ранее, свойства Stroke и Fill можно устанавливать в XAML-разметке, используя имена цветов — в этом случае анализатор WPF автоматически создает соответствующий объект SolidColorBrush. Установить Stroke и Fill можно также в коде, но в этом случае объект SolidColorBrush придется создавать явно:
// Создать кисть из именованного цвета
cmd.Background = new SolidColorBrush(Colors.AliceBlue) ;
// Создать кисть из системного цвета
cmd.Background = SystemColors.ControlBrush;
// Создать кисть на основе значений цвета
int red = 0; int green = 255; int blue = 0;
cmd.Foreground = new SolidColorBrush(Color.FromRgb(red, green, blue));