9) Сборки, метаданные и ресурсы сборок / Трансформации и анимации в WPF

Сборки, метаданные и ресурсы сборок
В платформе .NET сборка (assembly) – это единица развёртывания и контроля версий. Сборка состоит из одного или нескольких программных модулей и, возможно, данных ресурсов. Программный модуль содержит метаданные и код на Common Intermediate Language. Метаданные – это информационные таблицы с полным описанием всех типов, которые размещены в модуле или на которые ссылается модуль. В одном из модулей метаданные хранят манифест с описа- нием всех файлов сборки. Будем называть сборку однофайловой, если она состоит из одного файла. Иначе сборка называется многофайловой. Тот файл, который содержит манифест сборки, будем называть главным файлом сборки. Простые приложения обычно представлены однофайловыми сборками. При разработке сложных приложений переход к многофайловым сборкам даёт следующие преимущества:
– ресурсы (текст, изображения и т. п.) можно хранить отдельно от исполняемого кода, что позволяет изменять ресурсы без перекомпиляции приложения;
– если исполняемый код приложения разделён на несколько модулей, то модули загружаются в память только по мере надобности;
– скомпилированный модуль может использоваться в нескольких сборках.
Соберём многофайловую сборку. Ключ компилятора /addmodule позволяет добавить к сборке ссылку на внешний модульmainclass.exe и файла-модуля textclass.netmodule. Теперь можно создать новую сборку, в которой используется код из модуля textclass.netmodule, то есть сделать модуль разделяемым между несколькими сборками. Как правило, крупные программные проекты состоят из нескольких сборок, связанных ссылками. Среди этих сборок имеется некая основная (обычно оформленная как исполняемый файл), а другие сборки играют роль подключаемых библиотек с кодом необходимых типов (как правило, имеют расширение *.dll). В Visual Studio для добавления ссылок на сборки используется ветвь References в дереве проекта в Solution Explorer, или команда меню Project | Add Reference. Создавая сборку, программист может снабдить её цифровой подписью, версией, указанием на региональную принадлежность и другой информацией. Эти данные внедряются в сборку при помощи атрибутов уровня сборки. Атрибуты можно разместить в любом файле с исходным кодом, необходимо только подключить пространство имён System.Reflection. Если для разработки используется Visual Studio, все атрибуты уровня сборки по умолчанию находятся в файле AssemblyInfo.cs. Платформа .NET разделяет сборки на локальные (или сборки со слабыми именами) и глобальные (или сборки с сильными именами). Локальные сборки обеспечивают простоту развёртывания приложения (все его компоненты сосредоточены в одном месте) и изолированность компонентов. Имя локальной сборки – слабое имя – это имя файла сборки без расширения. 

Трансформации и анимации в WPF
Трансформация – это заданное изменение координатной системы, в которой отображается элемент. Описание таких трансформаций на плоскости, как масштабирование, отражение и поворот, можно выполнить в терминах числовых матриц размером 2х2. Чтобы представить в матричной форме операцию сдвига координатной системы, используют однородные координаты. Однородными координатами точки (x, y) является тройка вида (x, y, 1). В терминах однородных координат основные трансформации можно выразить следующим образом:
1. Масштабирование (включая отражения)
2. Поворот на угол φ
3. Сдвиг
Комбинация трансформаций выполняется как умножение матриц.
В WPF трансформации представлены классами, унаследованными от абстрактного класса System.Windows.Media.Transform.
Классы трансформаций
TranslateTransform (Смещает координатную систему на указанную величину)
RotateTransform(Поворачивает координатную систему вокруг заданной точки)
ScaleTransform(Масштабирует координатную систему. Можно применять разную степень масштабирования по измерениям X и Y)
SkewTransform(Масштабирует координатную систему. Можно применять разную степень масштабирования по измерениям X и Y)
MatrixTransform(Выполняет трансформацию, используя указанную матрицу )
TransformGroup(Комбинирует несколько трансформаций. Порядок трансформаций имеет значение)
<Button Height="40" Width="70" Content="Rotate">
<Button.LayoutTransform>
<RotateTransform Angle="-45" />
</Button.LayoutTransform></Button>
Триггер – это способ описания реакции на изменение, альтернативный применению обработчиков событий. Триггеры имеют два достоинства. Во-первых, их легко задать декларативно. Во-вторых, для триггера указывается только условие старта, условие завершения действия триггера указывать не надо.Каждый триггер является экземпляром класса, который наследуется от System.Windows.TriggerBase. В WPF доступно пять видов триггеров:
1. Триггер свойства – класс Trigger. Это триггер самого простого типа. Он следит за появлением изменений в свойстве зависимостей.
2. Триггер события – класс EventTrigger. Триггер следит за наступлением указанного события. Триггеры событий применяются в анимации.
3. Триггер данных – класс DataTrigger. Этот триггер работает со связыванием данных. Он похож на триггер свойства, но следит за появлением изменений не в свойстве зависимостей, а в любых связанных данных.
4. Мультитриггер – классMultiTrigger. Триггер объединяет несколько триггеров свойств. Он стартует, если выполняются все условия объединяемых триггеров.5. Мультитриггер данных – класс MultiDataTrigger. Подобен мультитриггеру, но объединяет несколько триггеров данных.