2010-08-25 66 views
1
<Window x:Class="Viewport2DVisual3DExample.Window1" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
Title="Button on 3D" 
    WindowStyle="None" 
    Background="{x:Null}" 
    Foreground="{x:Null}" 
    AllowsTransparency="True" 
    > 

    <Viewport3D> 
     <Viewport3D.Camera> 
      <PerspectiveCamera Position="0, 0, 4"/> 
     </Viewport3D.Camera> 

     <!-- Front --> 
     <Viewport2DVisual3D> 
      <!-- Give the plane a slight rotation --> 
      <Viewport2DVisual3D.Transform> 
       <RotateTransform3D> 
        <RotateTransform3D.Rotation> 
         <AxisAngleRotation3D x:Name="frontTransform" Angle="0" Axis="0, 1, 0" /> 
        </RotateTransform3D.Rotation> 
       </RotateTransform3D> 
      </Viewport2DVisual3D.Transform> 

      <!-- The Geometry, Material, and Visual for the Viewport2DVisual3D --> 
      <Viewport2DVisual3D.Geometry> 
       <MeshGeometry3D Positions="-1,1,0 -1,-1,0 1,-1,0 1,1,0" 
           TextureCoordinates="0,0 0,1 1,1 1,0" TriangleIndices="0 1 2 0 2 3"/> 
      </Viewport2DVisual3D.Geometry> 

      <Viewport2DVisual3D.Material> 
       <DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True" Brush="White"/> 
      </Viewport2DVisual3D.Material> 

      <!-- Here Here Here Here Here --> 
      <Image Source="i:\\tempa\\tm.png" Width="534" Height="458" /> 

    </Viewport2DVisual3D> 

     <!-- Back --> 
     <Viewport2DVisual3D> 
      <!-- Give the plane a slight rotation --> 
      <Viewport2DVisual3D.Transform> 
       <RotateTransform3D > 
        <RotateTransform3D.Rotation> 
         <AxisAngleRotation3D x:Name="backTransform" Angle="180" Axis="0, 1, 0" /> 
        </RotateTransform3D.Rotation> 
       </RotateTransform3D> 
      </Viewport2DVisual3D.Transform> 

      <!-- The Geometry, Material, and Visual for the Viewport2DVisual3D --> 
      <Viewport2DVisual3D.Geometry> 
       <MeshGeometry3D Positions="-1,1,0 -1,-1,0 1,-1,0 1,1,0" 
           TextureCoordinates="0,0 0,1 1,1 1,0" TriangleIndices="0 1 2 0 2 3"/> 
      </Viewport2DVisual3D.Geometry> 

      <Viewport2DVisual3D.Material> 
       <DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True" Brush="White"/> 
      </Viewport2DVisual3D.Material> 

      <Button Name="btnBack">Back</Button> 
     </Viewport2DVisual3D> 

     <ModelVisual3D> 
      <ModelVisual3D.Content> 
       <DirectionalLight Color="#FFFFFFFF" Direction="0,0,-1"/> 
      </ModelVisual3D.Content> 
     </ModelVisual3D> 

    </Viewport3D> 

关于WPF的一个问题。在的Viewport3D

大小我想建立使用的Viewport3D 2的侧窗。但后来我在尺寸方面遇到了一些麻烦。

   <!-- Here Here Here Here Here --> 
      <Image Source="i:\\tempa\\tm.png" Width="534" Height="458" /> 

我想要这个图像与它的源图像大小完全一样。

指定值或“auto”都不起作用。

我怎样才能得到我想要的?

回答

2

我的3D知识是有限的,有人可以更好地回答这个问题,但在3d环境中,物体的大小取决于很多东西..相机位置,近/远平面,大小/位置对象,应用于该对象的变换,视口大小以及可能遗忘的其他内容。渲染内容时,3D引擎会将所有内容都考虑在内。设置图像的大小只是其中的一部分。

也许尝试搞乱相机的位置或添加scaletransform图像。

+0

谢谢。几个小时前通过一些文件后,我也意识到了这一点。但我还没有找到如何计算比例。我希望有人能帮助我。在此之前,我将尝试通过实验获得比例。 – MaoWoo 2010-08-26 08:26:44