2D окна формируют элементы управления в 3D пространстве - PullRequest
0 голосов
/ 16 декабря 2009

Пожалуйста, прости меня, если это не то место, где можно оставить этот вопрос.

Я новичок в dotNET и ничего не знаю о Direct3D и WPF. Учебники, которые я там нашел, не подходят для такого начинающего, как я.

Я хочу создать простую форму окон в CSharp, в которой 2D-элементы управления размещены в трехмерном пространстве. Пожалуйста, наведите меня простым способом.

Извините, я плохо владею английским языком, я не знаю, достаточно ли ясен вышеуказанный вопрос, пожалуйста, позвольте мне объяснить его следующей картинкой:

Я не могу публиковать изображения, перейдите по этой ссылке

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

Чтобы было более понятно, это пример проекта во Flash, над которым я работал давным-давно, я хочу создать аналогичное приложение для Windows с C #:

aveltium.blogspot.com ( Это мой первый пост, поэтому я не могу поставить две гиперссылки )

1 Ответ

1 голос
/ 24 декабря 2009

Я воссоздал сцену, которую вы описали на своем рисунке в WPF - ну, я сделал левую и правую панели - я оставлю нижнюю панель для вас.

Вам просто нужно создать новое приложение WPF в VS2008, вставить следующий XAML поверх XAML Window1 и запустить приложение ...

Надеюсь, это поможет.

Приветствия

Andy

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="480" Width="751">
    <Window.Resources>
        <Transform3DGroup x:Key="leftTransform" >
            <TranslateTransform3D OffsetX="-3"></TranslateTransform3D>
            <RotateTransform3D  >
                <RotateTransform3D.Rotation>
                    <AxisAngleRotation3D Axis="0,1,0" Angle="50" />
                </RotateTransform3D.Rotation>
            </RotateTransform3D>
        </Transform3DGroup>
        <Transform3DGroup x:Key="rightTransform" >
            <TranslateTransform3D OffsetX="3"></TranslateTransform3D>
            <RotateTransform3D  >
                <RotateTransform3D.Rotation>
                    <AxisAngleRotation3D Axis="0,1,0" Angle="-50" />
                </RotateTransform3D.Rotation>
            </RotateTransform3D>
        </Transform3DGroup>
        <MeshGeometry3D
                        x:Key="squareMeshFront"
                        Positions="-1.5,-1,1  1.5,-1,1  1.5,1,1  -1.5,1,1"
                        TriangleIndices="0 1 2 0 2 3"
                        TextureCoordinates="0,1 1,1 1,0 0,0" />

        <DiffuseMaterial x:Key="visualHostMaterial" Brush="White" Viewport2DVisual3D.IsVisualHostMaterial="True" />
    </Window.Resources>

    <Viewport3D>

        <Viewport3D.Camera>
            <PerspectiveCamera Position="0,0,10" LookDirection="0,0,-1" />
        </Viewport3D.Camera>

        <Viewport2DVisual3D x:Name="vpLeft" Material="{StaticResource visualHostMaterial}" Geometry="{StaticResource squareMeshFront}" Transform="{StaticResource leftTransform}" >

            <Grid Width="300" Height="200" Background="LightGray">
                <Grid.RowDefinitions>
                    <RowDefinition Height="50" />
                    <RowDefinition Height="30" />
                    <RowDefinition Height="30" />
                    <RowDefinition Height="30" />
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition></ColumnDefinition>
                    <ColumnDefinition></ColumnDefinition>
                </Grid.ColumnDefinitions>

                <Label Content="Panel 1" HorizontalAlignment="Left" FontSize="30"></Label>

                <Label Grid.Row="1" HorizontalAlignment="Left" Margin="0,0,10,0">ComboBox</Label>
                <ComboBox HorizontalAlignment="Left" Grid.Row="1" Grid.Column="1" Width="100" Margin="0,0,0,4" />

                <Label Grid.Row="2" HorizontalAlignment="Left" Margin="0,0,10,0">Text Box</Label>
                <TextBox HorizontalAlignment="Left" Grid.Row="2" Grid.Column="1" Width="100" Margin="0,0,0,4"></TextBox>

                <Button Grid.Row="3" Grid.Column="1" HorizontalAlignment="Left" Width="100" Height="25">Button</Button>
            </Grid>

        </Viewport2DVisual3D>

        <Viewport2DVisual3D x:Name="vpRight" Material="{StaticResource visualHostMaterial}" Geometry="{StaticResource squareMeshFront}" Transform="{StaticResource rightTransform}" >

            <Grid Width="300" Height="200" Background="LightGray">
                <Grid.RowDefinitions>
                    <RowDefinition Height="50" />
                    <RowDefinition Height="30" />
                    <RowDefinition Height="30" />
                    <RowDefinition Height="30" />
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition></ColumnDefinition>
                    <ColumnDefinition></ColumnDefinition>
                </Grid.ColumnDefinitions>

                <Label Content="Panel 1" HorizontalAlignment="Left" FontSize="30"></Label>

                <Label Grid.Row="1" HorizontalAlignment="Left" Margin="0,0,10,0">ComboBox</Label>
                <ComboBox HorizontalAlignment="Left" Grid.Row="1" Grid.Column="1" Width="100" Margin="0,0,0,4" />

                <Label Grid.Row="2" HorizontalAlignment="Left" Margin="0,0,10,0">Text Box</Label>
                <TextBox HorizontalAlignment="Left" Grid.Row="2" Grid.Column="1" Width="100" Margin="0,0,0,4"></TextBox>

                <Button Grid.Row="3" Grid.Column="1" HorizontalAlignment="Left" Width="100" Height="25">Button</Button>
            </Grid>

        </Viewport2DVisual3D>

        <ModelVisual3D>
            <ModelVisual3D.Content>
                <AmbientLight Color="White" />
            </ModelVisual3D.Content>
        </ModelVisual3D>
    </Viewport3D>

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