Вспомните, что когда необходимо строить интерактивную двумерную визуализацию, то фигуры делают такой процесс очень простым. С другой стороны, статические, не интерактивные изображения могут визуализироваться в оптимальной манере с использованием рисунков и геометрических объектов, а визуальный уровень (доступный только в коде) обеспечит максимальный контроль и производительность.
Глава 27
Ресурсы, анимация, стили и шаблоны WPF
В настоящей главе будут представлены три важные (и взаимосвязанные) темы, которые позволят углубить понимание API-интерфейса Windows Presentation Foundation (WPF). Первым делом вы изучите роль
Далее вы узнаете, как определять, выполнять и управлять анимационной последовательностью. Вопреки тому, что можно было подумать, применение анимации WPF не ограничивается видеоиграми или мультимедийными приложениями. В API-интерфейсе WPF анимация может использоваться, например, для подсветки кнопки, когда она получает фокус, или увеличения размера выбранной строки в DataGrid. Понимание анимации является ключевым аспектом построения специальных шаблонов элементов управления (как вы увидите позже в главе).
Затем объясняется роль стилей и шаблонов WPF. Подобно веб-странице, в которой применяются стили CSS или механизм тем ASP.NET, приложение WPF может определять общий вид и поведение для набора элементов управления. Такие стили можно определять в разметке и сохранять их в виде объектных ресурсов для последующего использования, а также динамически применять во время выполнения. В последнем примере вы научитесь строить специальные шаблоны элементов управления.
Система ресурсов WPF
Первой задачей будет исследование темы встраивания и доступа к ресурсам приложения. Инфраструктура WPF поддерживает два вида ресурсов. Первый из них —
Вторая категория, называемая
Работа с двоичными ресурсами
Прежде чем перейти к теме объектных ресурсов, давайте кратко проанализируем, как упаковывать BinaryResourcesApp. Модифицируйте разметку начального окна для обработки события Loaded элемента Window и применения DockPanel в качестве корня компоновки:
Title="Fun with Binary Resources" Height="500" Width="649"
Loaded="MainWindow_OnLoaded">
Предположим, что приложение должно отображать внутри части окна один из трех файлов изображений, основываясь на пользовательском вводе. Элемент управления Image из WPF может использоваться для отображения не только типичного файла изображения (*.bmp, *.gif, *.ico, *.jpg, *.png, *.wdp или *.tiff), но также данных объекта DrawingImage (как было показано в главе 26). Можете построить пользовательский интерфейс окна, который поддерживает диспетчер компоновки DockPanel, содержащий простую панель инструментов с кнопками Next (Вперед) и Previous (Назад). Ниже панели инструментов расположите элемент управления Image, свойство Source которого в текущий момент не установлено:
Margin="5" Content="Previous" Click="btnPreviousImage_Click"/>
Margin="5" Content="Next" Click="btnNextImage_Click"/>
Добавьте следующие пустые обработчики событий:
private void MainWindow_OnLoaded(
object sender, RoutedEventArgs e)
{
}
private void btnPreviousImage_Click(
object sender, RoutedEventArgs e)
{
}