Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Троелсен Эндрю, "Язык программирования C#9 и платформа .NET5" бесплатно, без регистрации.
<b><!-- Элемент Rectangle с трансформацией поворотом --></b>
<Rectangle Height ="100" Width ="40" Fill ="Red">
<Rectangle.LayoutTransform>
<RotateTransform Angle ="45"/>
</Rectangle.LayoutTransform>
</Rectangle>
Здесь элемент
Button
SkewTransform
<b><!-- Элемент Button с трансформацией скашиванием --></b>
<Button Content ="Click Me!" Width="95" Height="40">
<Button.LayoutTransform>
<SkewTransform AngleX ="20" AngleY ="20"/>
</Button.LayoutTransform>
</Button>
Для полноты картины ниже приведен элемент
Ellipse
ScaleTransform
Height
Width
TextBox
<b><!-- Элемент Ellipse, масштабированный на 20% --></b>
<Ellipse Fill ="Blue" Width="5" Height="5">
<Ellipse.LayoutTransform>
<ScaleTransform ScaleX ="20" ScaleY ="20"/>
</Ellipse.LayoutTransform>
</Ellipse>
<b><!-- Элемент TextBox, повернутый и скошенный --></b>
<TextBox Text ="Me Too!" Width="50" Height="40">
<TextBox.LayoutTransform>
<TransformGroup>
<RotateTransform Angle ="45"/>
<SkewTransform AngleX ="5" AngleY ="20"/>
</TransformGroup>
</TextBox.LayoutTransform>
</TextBox>
Следует отметить, что в случае применения трансформации выполнять какие-либо ручные вычисления для реагирования на проверку попадания, перемещение фокуса ввода и аналогичные действия не придется. Графический механизм WPF самостоятельно решает такие задачи. Например, на рис. 26.8 можно видеть, что элемент
TextBox

Трансформация данных Canvas
Теперь нужно внедрить в пример
RenderingWithShapes
Rectangle
TextBox
DockPanel
<DockPanel LastChildFill="True">
<DockPanel.LayoutTransform>
<RotateTransform Angle="45"/>
</DockPanel.LayoutTransform>
...
</DockPanel>
В рассматриваемом примере это несколько чрезмерно, так что добавьте последнюю (менее радикальную) возможность, которая позволит пользователю зеркально отобразить целый контейнер
Canvas
ToolBar
ToggleButton
<ToggleButton Name="flipCanvas" Click="FlipCanvas_Click"
Content="Flip Canvas!"/>
Внутри обработчика события
Click
ToggleButton
RotateTransform
Canvas
LayoutTransform
ToggleButton
ToggleButton
LayoutTransform
null
private void FlipCanvas_Click(object sender, RoutedEventArgs e)
{
if (flipCanvas.IsChecked == true)
{
RotateTransform rotate = new RotateTransform(-180);
canvasDrawingArea.LayoutTransform = rotate;
}
else
{
canvasDrawingArea.LayoutTransform = null;
}
}
Запустите приложение и добавьте несколько графических фигур в область
Canvas
Canvas