Студопедия

КАТЕГОРИИ:

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

Управление размером элементов.




Обычно элементы WPF стремятся подстроиться под размер своего содержимого, но не больше

Свойства Height и Width

Во всех классах, производных от FrameworkElement, есть свойства Height (высота) и Width (ширина) (типа double), а также MinHeight, MaxHeight, MinWidth и MaxWidth, которыми можно пользоваться для задания допустимых диапазоне» значений. Обычно элемент стремится принять минимально возможный размер, поэтому если задано свойство MinHeight или MinWidth, то при визуализации выбирается именно такая высота или ширина при условии, что содержимое не вынуждает увеличить размер. Но увеличение можно ограничить с помощью свойств MaxHeight и MaxWidth. Если одновременно с минимальными и максимальными значениями заданы свойства Height и Width, то последние имеют приоритет при условии, что попадают внутрь диапазона между Min и Мах. По умолчанию MinHeight и MinWidth равны 0, a MaxHeight и MaxWidth - величине Double.PositiveInfinityЕсли значения свойств Height и Width не заданы явно, то они будут иметь значение Double. NaN, каким бы ни оказался истинный размер элемента.

Свойства Margin и Padding

Очень похожие свойства Margin и Padding тоже связаны с размером элемента. Свойство Margin определено для всех объектов, производных от FrameworkElement, свойство Padding во всех элементах управления, производных от класса Control (а также в классе Border). Различие в том, что Margin задает внешнее поле вокруг элемента, a Padding - внутренний отступ между содержимым элемента и его границами. Оба свойства имеют тип System.Windows.Thickness;. Свойство Margin (но не Padding) может принимать отрицательные значения.

Свойство Visibility

Тип свойства элемента Visibility - не Boolean, а перечисление System.Windows.Visibility с тремя состояниями, то есть оно может принимать три значения:

Visible – элемент виден и участвует в компоновке.

Collapsed – элемент не виден и не участвует в компоновке.

Hidden – элемент не виден, но тем не менее участвует в компоновке.

Управление положением элемента.

С помощью свойств HorizontalAlignment и VerticalAlignment элемент может управлять распределением избыточного пространства, выделенного ему родителем. Значениями свойств являются одноименные перечисления, которые определены в пространстве имен System.Windows:

HorizontalAlignment - Left, Center, Right, Stretch

VerticalAlignment - Top, Center, Bottom, Stretch

По умолчанию оба свойства принимают значение Stretch

Выравнивание содержимого

Помимо свойств HorizontalAlignment и VerticalAlignment, в классе Control имеются свойства HorizontalContentAlignment и VerticalContentAlignment. Они определяют порядок размещения содержимого внутри элемента управления.по умолчанию свойство HorizontalContentAlignment равно Left, a VerticalContentAlignment равно Тор.

Свойство FlowDirection, определенное в классе FrameworkElement позволяет изменить направление визуализации внутреннего содержимого элемента. Тип этого свойства - перечисление System.Windows.FlowDirection, принимающее два значения: LeftToRight (по умолчанию в классе FrameworkElement) и RightToLeft.

Отметим, что свойство FlowDirection не оказывает влияния на направление записи букв в надписи внутри кнопок.

Применение преобразований.

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

Во всех подклассах FrameworkElement имеется два свойства типа Transform, позволяющих применять преобразования:

LayoutTransform - применяется до компоновки элемента

RenderTransform (унаследовано от UIElement) - применяется после завершения компоновки (непосредственно перед визуализацией элемента)

В классе UIElement имеется также полезное свойство RenderTransformOrigin, представляющее начальную точку преобразования. Свойство RenderTransformOrigin имеет тип System.Windows.Point и по умолчание равно (0,0). Этой точке соответствует левый верхний угол элемента. Точка (0,1) представляет левый нижний угол, (1,0) - правый верхний угол, а (1,1) - правый нижний угол. Можно задавать и числа, большие 1, - тогда начальная точка окажется вне границ элемента. Дробные значения также допустимы.

Преобразование RotateTransform.

Преобразование RotateTransform поворачивает элемент в соответствии со следующими тремя свойствами типа double:

Angle - угол поворота в градусах (по умолчанию 0)

CenterX - абсцисса центра поворота (по умолчанию 0)

CenterY - ордината центра поворота (по умолчанию 0)

Точка (CenterX,CenterY), равная по умолчанию (0,0), соответствует левому верхнему углу. Свойства CenterX и CenterY принимаются во внимание, только если преобразование применяется в режиме RenderTransform, потому что для преобразования в режиме LayoutTransform положение центра поворота определяется родительской панелью.

CenterX и CenterY задают абсолютное положение начальной точки, тогда как RenderTransformOrigin - относительное. Значения задаются в независимых от устройства пикселах, так что для правого верхнего угла элемента с шириной Width, равной 20, свойство CenterX будет равно 20, a CenterY - 0, а не (1,0), как для RenderTransformOrigin.

 

Преобразование ScaleTransform.

Преобразование ScaleTransform увеличивает или уменьшает элемент по горизонтали, по вертикали или в обоих направлениях. У него есть четыре свойства типа double:

ScaleX - коэффициент изменения ширины элемента (по умолчанию 1)

ScaleY - коэффициент изменения высоты элемента (по умолчанию 1)

CenterX-начальная точка для масштабирования по горизонтали (по умолч. 0)

CenterY - начальная точка для масштабирования по вертикали (по умолч. 0)

Если ScaleX равно 0.5, то ширина рисуемого элемента уменьшается вдвое, а если ScaleX равно 2, то вдвое увеличивается. Смысл свойств CenterX и CenterY такой же, как для преобразования RotateTransform.

Преобразование ScaleTransform увеличивает или уменьшает элемент по горизонтали, по вертикали или в обоих направлениях. У него есть четыре свойства типа double:

Если ScaleX равно 0.5, то ширина рисуемого элемента уменьшается вдвое, а если ScaleX равно 2, то вдвое увеличивается. Смысл свойств CenterX и CenterY такой же, как для преобразования RotateTransform.

Преобразование TranslateTransform.

Преобразование TranslateTransform просто параллельно переносит элемент в соответствии со значениями двух свойств типа double:

• X - величина смещения по горизонтали (по умолчанию 0)

• Y- величина смещения по вертикали (по умолчанию 0)

TranslateTransform не дает никакого эффекта, когда применяется в режиме LayoutTransfоrm, но применение его в режиме RenderTransform удобный способ «подвинуть» элементы. Чаще всего это делается динамически в ответ на действия пользователя.

Преобразование MatrixTransform.

вычислить матрицу преобразования MatrixTransform










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

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