如何旋转WPF窗口?

6

是否可以使用xaml将WPF窗口旋转45度?

2个回答

7
第一个问题:为什么您想要旋转整个窗口? 如果您确实需要: 您无法旋转普通的WPF窗口。请参见:旋转窗口 您将不得不创建一个无边框窗口并为其提供用户界面。请参见:用于自定义窗口框架的WPF非客户端区域设计技术 对于旋转的窗口外观: 设置:
  • AllowTransparency属性为true。
  • WindowStyle为None以删除窗口Chrome
  • Background为Transparent
将边框(或任何有意义的形状,如矩形、圆形、椭圆形等)作为窗口内容,并设置以下边框属性:
  • 白色背景(或任何不透明的颜色)
  • 旋转变换,以及
  • 更小的尺寸(以便在旋转时适合窗口内)。
边框将为您的窗口提供用户界面。
请注意创建自己的无边框窗口的注意事项,因为它需要您提供窗口界面,如最小化、最大化、关闭按钮;并且可能需要一些非托管代码。
此外,在下面的示例代码中,旋转时的边框必须保持在窗口范围内,否则它(以及您的自定义窗口)将被裁剪。 示例代码
<Window x:Class="CustomWindowStyle.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        AllowsTransparency="True" WindowStyle="None" Background="Transparent"
        Title="MainWindow" Height="600" Width="600">

        <Border BorderBrush="Green" BorderThickness="2" Background="White" Width="360" Height="360">
            <Border.RenderTransform>
                <RotateTransform Angle="-45" CenterX="180" CenterY="180"/>
            </Border.RenderTransform>
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="23" />
                    <RowDefinition Height="*" />
                </Grid.RowDefinitions>
                <Button Grid.Row="0" Content="X" Height="23" Width="23" Name="button1" HorizontalAlignment="Right" VerticalAlignment="Top" Click="button1_Click"/>
                <Grid Grid.Row="1">
                    <!--Main window content goes here-->
                    <TextBlock Text="Main window content goes here" HorizontalAlignment="Center" />
                </Grid>
            </Grid>
        </Border>
</Window>

1
谢谢,我想让用户有控制权来交互式旋转窗口,使应用程序更有趣。这是一个类似游戏的应用程序,所以希望根据窗口方向控制重力,我知道这很傻,但这就是想法。 - Joan Venge
2
我有一种预感,它一定是为某种游戏应用程序而设计的。:) 无论如何,想要补充说明的是(虽然是隐含的):1. 边框可以被替换为任何有意义的东西,例如椭圆形、圆形等等;2. 对于边框背景,不一定非得是白色 - 它可以是任何不透明的颜色。 - publicgk

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接