簡體   English   中英

如何旋轉WPF窗口?

[英]How to rotate a WPF Window?

是否可以使用xaml將WPF窗口旋轉45度?

第一個問題:為什么要旋轉整個窗口?

如果您確實需要它:
您不能旋轉普通的WPF窗口。 另請: 旋轉窗口

您將必須創建一個無邊界窗口並為其提供UI。 請參閱: 用於自定義窗口框架的WPF非客戶區域設計技術

對於旋轉的窗口外觀:
組:

  • AllowTransparency屬性為true。
  • 將WindowStyle設置為None以刪除窗口鑲邊
  • 透明背景

包括邊框(或任何有意義的矩形,圓形,橢圓形等)作為窗口的內容和border的以下屬性:

  • 白色背景(或任何非透明顏色)
  • 旋轉變換,以及
  • 較小的尺寸(以便在窗口內旋轉時適合)。

邊框將為您的窗口提供UI。


請注意創建自己的無邊界窗口的注意事項,因為它需要您提供窗口界面,如最小化,最大化,關閉按鈕; 並可能需要一些非托管代碼。
同樣,在下面的示例代碼中,旋轉時的邊框必須保持在窗口的范圍內,否則將修剪邊框(和您的自定義窗口)。

樣例代碼

<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>

據我所知,您不能旋轉整個窗口,但是可以將窗口內的所有內容放入自定義控件中,然后將RenderTransform對象應用於自定義控件。

示例(有點簡單):

http://www.codeproject.com/KB/WPF/TransformationsIntro.aspx

-丹

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM