Как повернуть окно WPF? - PullRequest
       7

Как повернуть окно WPF?

6 голосов
/ 19 апреля 2011

Можно ли повернуть окно WPF на 45 градусов, используя xaml?

Ответы [ 2 ]

7 голосов
/ 19 апреля 2011

Первый вопрос: почему вы хотите повернуть все окно?

Если вам это действительно нужно:
Нельзя поворачивать обычное окно WPF.См .: Поворот окна

Вам нужно будет создать окно без полей и предоставить ему интерфейс.См .: Методы проектирования не клиентской области WPF для пользовательских оконных рам

Для вида повернутого окна:
Набор:

  • Свойство AllowTransparency имеет значение true.
  • WindowStyle to None для удаления хрома окна
  • Фон для прозрачного

Включение границы (или чего-либо значимого, например прямоугольника, круга, эллипса,и т.д.) в качестве содержимого окна и следующих свойств границы:

  • белый фон (или любой непрозрачный цвет)
  • поворотное преобразование и
  • меньшеразмер (чтобы соответствовать при повороте в пределах окна).

Граница предоставит пользовательский интерфейс для вашего окна.


Будьте осведомлены о каваетах создания собственного окна без полей,поскольку для этого требуется предоставить интерфейс окна, такой как кнопки свертывания, сворачивания, закрытия;и может потребовать некоторый неуправляемый код.
Кроме того, в приведенном ниже примере кода граница при повороте должна оставаться в границах окна, иначе она (и ваше пользовательское окно) будет обрезана.

Пример кода

<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 голос
/ 19 апреля 2011

Насколько я знаю, вы не можете повернуть все окно целиком, но вы можете поместить все внутри окна в пользовательский элемент управления и применить к нему объект RenderTransform.

Пример (несколько простой):

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

- Дан

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...