| Россия |
Трансформации
Введение в трансформации.
Пакет Microsoft Expression Blend содержит визуальные средства для трансформации объектов (рис. 6.1):
Группа инструментов "Transform" – отличный помощник при изучении трансформаций. В XAML – графике подерживаются следующие трансформации:
- TranslateTransform (трансляция, перенос) – перемещение объекта к новым координатам X и Y.
- RotateTransform ( вращение) – поворот на заданный угол Angle.
- ScaleTransform ( масштабирование) – изменение геометрических размеров объекта при помощи кратных величин ScaleX и\или ScaleY.
- SkewTransform ( искажение) – смещение объекта вдоль горизонтальной и\или вертикальной оси, задаваемое с помощью углов AngleX и AngleY.
- MatrixTransform (M11, M12, M21, M22, OffsetX, OffsetY) – задание параметров трансформации в виде матрицы.
Команды аддитивны, то есть при последовательном применении нескольких команд результат будет представлять собой сумму отдельных преобразований.
TranslateTransform
Команда TranslateTransform представляет собой перенос начала системы отсчета в новую точку с заданными координатами. Рассмотрим следующий фрагмент кода:
<Rectangle Canvas.Left="25"
Canvas.Top="25" Width="50"
Height="25" Fill="skyblue"
Stroke="red" StrokeThickness="2"/>
<Rectangle Canvas.Left="25"
Canvas.Top="25" Width="50"
Height="25" Fill="palegreen"
Stroke="red" StrokeThickness="2" >
<Rectangle.RenderTransform>
<TranslateTransform X="100"
Y="75"/>
</Rectangle.RenderTransform>
</Rectangle>Координаты обоих прямоугольников и их геометрические размеры совпадают. Следовательно, на рисунке второй прямоугольник должен был бы наложится на первый. Но для второго прямоугольника была применена команда TranslateTransform и теперь начало его собственной системы координат располагается в точке 100, 75 (рис. 6.2):
Трансформация применяется к фигуре при помощи специального тега RenderTransform. В табл. 6.1 приводятся примеры использования этой команды.
| № | Код | Вид в браузере |
|---|---|---|
| 6.1.1 | ||
<Canvas
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="200" Height="150"
Background="White"
x:Name="Page">
<Rectangle Canvas.Left="25"
Canvas.Top="25" Width="50"
Height="25" Fill="skyblue"
Stroke="red" StrokeThickness="2"/>
<Rectangle Canvas.Left="25"
Canvas.Top="25" Width="50"
Height="25" Fill="palegreen"
Stroke="red" StrokeThickness="2"
RenderTransformOrigin="0.5,0.5">
<Rectangle.RenderTransform>
<TranslateTransform X="100"
Y="75"/>
</Rectangle.RenderTransform>
</Rectangle>
</Canvas> |
||
| Описание | ||
| Перенос фигуры в точку с координатами 100, 75. Как обычно, координаты отсчитываются от верхнего левого угла прямоугольника. Однако специальный атрибут RenderTransformOrigin ( http://msdn.microsoft.com/en-us/library/bb980041(VS.95).aspx) позволяет установить центральную точку, относительно которой будет осуществляться преобразование. Она определяется в кратных долях от геометрических размерах объекта. Понятно, что в случае команды трансляции эффект практически не будет заметен. | ||
| № | Код | Вид в браузере |
| 6.1.2 | ||
<Canvas
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="200" Height="150"
Background="White"
x:Name="Page">
<Rectangle Canvas.Left="25"
Canvas.Top="25" Width="50"
Height="25" Fill="skyblue"
Stroke="red" StrokeThickness="2"/>
<Canvas Width="180"
Height="80" Canvas.Left="10"
Canvas.Top="10">
<Rectangle Canvas.Left="25"
Canvas.Top="25" Width="50"
Height="25" Fill="palegreen"
Stroke="red" StrokeThickness="2" />
<Canvas.RenderTransform>
<TranslateTransform X="100"
Y="75"/>
</Canvas.RenderTransform>
</Canvas>
</Canvas> |
||
| Описание | ||
| Применение команды TranslateTransform для элемента Canvas. Внутри группы расположен один элемент | ||
| № | Код | Вид в браузере |
| 6.1.3 | ||
<Canvas
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="200" Height="100"
Background="White"
x:Name="Page">
<TextBlock
FontFamily="Arial"
FontSize="24"
FontWeight="Bold"
Foreground="Green"
Canvas.Left="10"
Canvas.Top="30"
Text="Translate"></TextBlock>
<TextBlock
FontFamily="Arial"
FontSize="24"
FontWeight="Bold"
Foreground="Green"
Canvas.Left="10"
Canvas.Top="30"
Text="Translate">
<TextBlock.RenderTransform>
<TranslateTransform X="30"
Y="30" />
</TextBlock.RenderTransform>
</TextBlock>
</Canvas> |
||
| Описание | ||
| Трансформация текста | ||
| № | Код | Вид в браузере |
| 6.1.4 | ||
<Canvas
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="200" Height="100"
Background="White"
x:Name="Page">
<TextBlock
FontFamily="Arial"
FontSize="40"
FontWeight="Bold"
Foreground="Gray"
Canvas.Left="10"
Canvas.Top="30"
Text="Translate">
<TextBlock.RenderTransform>
<TranslateTransform X="2"
Y="2" />
</TextBlock.RenderTransform>
</TextBlock>
<TextBlock
FontFamily="Arial"
FontSize="40"
FontWeight="Bold"
Foreground="Green"
Canvas.Left="10"
Canvas.Top="30"
Text="Translate"></TextBlock>
</Canvas> |
||
| Описание | ||
| Трансформация текста – получение эффекта тени | ||





