Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Класс Binding и его свойства.




В WPF привязка (binding) является мощным инструментом программирования, без которого не обходится ни одно серьезное приложение.

Привязка подразумевает взаимодействие двух объектов: источника и приемника. Объект-приемник создает привязку к определенному свойству объекта-источника. В случае модификации объекта-источника, объект-приемник также будет модифици Большую роль при работе с данными играет механизм привязки. Для создания привязки применяется элемент Binding и его свойства:

ElementName: имя элемента, к которому идет привязка.

Path: ссылка на свойство объекта, к которому идет привязка

Source: ссылка на источник данных, который не является элементом управления

Свойства элемента Binding помогают установить источник привязки. Для установки источника или контекста данных в элементах управления WPF предусмотрено свойство DataContext.

Основы анимации в WPF.

Наличие встроенных возможностей анимации представляют одну из ключевых особенностей платформы WPF. ограничениях:

Одна анимация выполняется только для одного свойства зависимостей

Для анимации свойства необходим класс анимации, который бы поддерживал тип этого свойства.

За анимацию в WPF отвечает пространство имен System.Windows.Media.Animation

Классы, которые производят линейную интерполяцию значений, благодаря чему при анимации свойство плавно изменяет свое значение. Как правило, такие классы называются по шаблону TypeAnimation, где Type - тип данных, которое представляет анимируемое свойства, например, DoubleAnimation:ByteAnimationColorAnimation

Классы, которые производят анимацию по ключевым кадрам или фреймам (покадровая анимация). Такие классы, как правило, называются по шаблону TypeAnimationUsingKeyFrames,например, DoubleAnimationUsingKeyFramesилиBooleanAnimationUsingKeyFrames

Классы, которые используют для анимации объект PathGeometry. Такие классы, как правило, называются по шаблонуTypeAnimationUsingPath, например, DoubleAnimationUsingPathDoubleAnimationUsingPath

Анимацию можно создать и использовать как декларативно в коде XAML, так и программно в коде C#.

Способ реализации анимации в WinForms и его недостатки.

.Netframework содержит самые мощные средства визуализации вплоть до поддержки 3д и DirectX .Netframework имеет смысл использовать для создания сложных графических или инженерных приложений. Например, .Net хорошо проявил себя в 1С-приложении моделирования производства окон.

Недостатки использования .Netframework аналогичны недостаткам Active X, за исключением того, что WPF/WinForms приложения и быстрее создавать, чем Active X.

Анимация на основе свойств и ее ограничения.

Часто анимацию воспринимают как последовательность кадров В WPF используется совершенно другая модель. По сути, анимация WPF — это просто способ модифицировать значение свойства зависимости через интервалы времени. Секрет создания правильной анимации кроется в определении того, какие именно свойства должны изменяться.

добавлять или удалять элементы в процессе анимации нельзя. Аналогично не получится попросить WPF перейти от начальной сцены к конечной. И, наконец, анимацию можно применять только к свойствам зависимости, поскольку лишь эти свойства используют систему динамического разрешения свойств, которая учитывает анимацию.

Фактически можно реализовать широкий диапазон эффектов анимации, используя общие свойства, которые поддерживаются всеми элементами. Но следует признать, что существует немало случаев, когда система анимации на основе свойств не работает. В качестве эмпирического правила необходимо отметить, что анимация на базе свойств — отличный способ добавить динамические эффекты к обычным в других отношениях Windows-приложениям.

Например, если вы хотите соорудить привлекательный фасад для интерактивного инструмента электронной торговли, анимация на основе свойств будет работать замечательно. Однако если анимация должна использоваться для обеспечения основной функциональности приложения и работать на протяжении всего времени его существования, то для этого понадобится нечто более мощное и гибкое.

Классы анимации.

На основе упомянутых типов анимации — DoubleAnimation и ColorAnimation — можно предположить, что все классы анимации называются в стиле ИмяТипаAnimation. существуют два вида анимации — та, которая изменяет свойства последовательно от начального до конечного значения (этот процесс называется линейной интерполяцией), и та, что произвольно изменяет свойство от одного значения к другому.

Примерами из первой категории могут служить DoubleAnimation и ColorAnimation; они используют интерполяцию для гладкого изменения значения. Однако интерполяция не имеет смысла при изменении определенных типов данных, таких как строки и объекты ссылочных типов. Вместо применения интерполяции эти типы данных изменяются скачкообразно в определенный момент времени, для чего применяется техника, называемая анимацией ключевого кадра (keyframeanimation). Все классы анимации ключевого кадра носят имена в форме ИмяТипаAnimationUsingKeyFrames — например, StringAnimationUsingKeyFrames и ObjectAnimationUsingKeyFrames.

Некоторые типы данных имеют класс анимации ключевого кадра, но не имеют класса анимации методом интерполяции. Однако каждый тип данных поддерживает анимацию ключевого кадра или же поддержка анимации вообще отсутствует. Другими словами, каждый тип данных, имеющий соответствующий ему класс анимации методом интерполяции (вроде DoubleAnimation и ColorAnimation), также имеет соответствующий тип анимации ключевого кадра (такой как DoubleAnimationUsingKeyFrames и ColorAnimationUsingKeyFrames).

По правде говоря, есть еще один тип анимации. Третий тип называется анимацией на основе пути (path-basedanimation), и этот тип более специализирован, чем анимация методом интерполяции или анимация ключевого кадра. Анимация на основе пути модифицирует значение в соответствии с фигурой, описанной в объекте PathGeometry, и в первую очередь применяется для перемещения элемента по некоторому пути. Классы для анимации на основе пути имеют имена в стиле ИмяТипаAnimationUsingPath, например, DoubleAnimationUsingPath или PointAnimationUsingPath.

Хотя в настоящее время в WPF используются три подхода к анимации (линейная интерполяция, ключевые кадры и пути), ничто не мешает создавать классы анимации, которые модифицируют значения на основе совершенно другого подхода. Единственное требование — класс анимации должен модифицировать значения с течением времени. В конечном итоге, вот что можно обнаружить в пространстве имен System.Windows.Media.Animation:

17 классов использующих анимацию методом интерполяции;

22 класса использующих анимацию ключевого кадра;

3 класса использующих анимацию на основе пути.

Все эти классы анимации унаследованы от абстрактного класса ИмяТипаAnimationBase, реализующего несколько основополагающих аспектов. Он предоставляет основу для создания собственных классов анимации. Если тип данных поддерживает более одного типа анимации, то все его классы анимации наследуются от абстрактного базового класса. Например, DoubleAnimation и DoubleAnimationUsingKeyFrames — оба являются наследниками DoubleAnimationBase.

Базовая анимация. Ее типы.

Ранее уже было упомянуто основное правило анимации WPF: каждая анимация работает на основе отдельного свойства зависимости. Однако имеется и другое ограничение. Для осуществления анимации свойства (другими словами, для изменения его значения с течением времени) понадобится класс анимации, поддерживающий его тип данных. Например, свойство Button.Width использует тип данных double. Для его анимации применяется класс DoubleAnimation. Однако Button.Padding использует структуру Thickness, поэтому ему потребуется класс ThicknessAnimation.

Многие типы данных не имеют соответствующих классов анимации, поскольку это непрактично. Примером могут служить перечисления. Например, размещением элемента в панели компоновки можно управлять с помощью свойства HorizontalAlignment, которое принимает значения из перечисления HorizontalAlignment. Однако перечисление HorizontalAlignment предлагает только четыре значения (Left, Right, Center и Stretch), что существенно ограничивает его применение в анимации. Хотя есть возможность переключаться с одной ориентации на другую, плавно перенести элемент от одного типа выравнивания к другому не удастся. По этой причине класс анимации для типа данных HorizontalAlignment не предусмотрен. Его можно создать самостоятельно, однако ограничение этими четырьмя значениями перечисления все равно остается.

Анимация ссылочных типов обычно не выполняется, однако делается дляихподсвойств. Например, все элементы управления имеют свойство Background, что позволяет устанавливать объект Brush, используемый для рисования фона. Применять анимацию для переключения от одной кисти к другой не слишком эффективно, но можно использовать анимацию для изменения свойств кисти, например, варьировать свойство Color объекта SolidColorBrush (применяя для этого класс ColorAnimation) или же свойство Offset объекта GradientStop в составе LinearGradient (с помощью класса DoubleAnimation). Это расширяет возможности анимации WPF, позволяя анимировать специальные аспекты внешнего вида элементов.

 










Последнее изменение этой страницы: 2018-04-12; просмотров: 252.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...