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

最佳答案

第一个问题:为什么要旋转整个窗口?

如果您确实需要它:

您不能旋转普通的WPF窗口。另请:Rotate Window

您将必须创建一个无边界窗口并为其提供UI。另请:WPF Non-Client Area Design Techniques For Custom Window Frames

对于旋转的窗口外观:

放:

  • AllowTransparency属性为
    真的。
  • WindowStyle为无
    删除窗口chrome
  • 背景
    到透明

  • 包括边框(或任何有意义的矩形,圆形,椭圆形等),作为窗口的内容和border的以下属性:
  • 白色背景(或任何非透明颜色)
  • 旋转变换,然后
  • 的大小较小(以便在窗口内旋转时适合)。

  • 边框将为您的窗口提供用户界面。

    请注意创建自己的无边界窗口的注意事项,因为它要求您提供最小化,最大化,关闭按钮之类的窗口界面。并可能需要一些非托管代码。

    另外,在下面的示例代码中,旋转时的边框必须保持在窗口的范围内,否则它将被修剪(和您的自定义窗口)。

    示例代码
    <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>
    

    关于c# - 如何旋转WPF窗口?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5710320/

    10-12 03:53
    查看更多