2009-12-16 77 views
0

请原谅我,如果这不是适当的地方发布这个问题。在3D空间中的2D窗体窗体控件

我是DotNET新手,对Direct3D和WPF一窍不通。我发现那里的教程似乎不适合像我这样的初学者。

我想在CSharp中创建一个简单的窗体窗体,并将其2D控件放置在3D空间中,请以简单的方式指导我。

对不起,我不擅长英语,我不知道,如果上面的问题是非常明显的,请让我用下面的图片解释:

I cannot post images yet, please click this link

上面的照片是不是真实的,它是用photoshop编辑,它只是解释我想实现的目标。)

为了使它更清楚,这是在Flash实例项目我在长工作前一段时间,我想创建一个类似的东西作为一个Windows应用程序与C#:

aveltium.blogspot.com(这是我的第一篇文章,所以我不能把两个超链接

回答

1

我已经重新创建你在你的图片在WPF中描述的场景 - 那好,我我已经完成了左右窗格 - 我将离开底部窗格。

你只需要创建一个VS2008新的WPF应用程序,并粘贴在窗口1 XAML以下XAML和运行应用程序...

希望这有助于。

干杯,

安迪

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