2013-08-02 4 views
0

내가 여기 내 코드 이미지를 포함하는 Viewport3D의 한 :Viewport3D 콘텐츠 크기

<Window> 
    <Window.Resources> 
    <MaterialGroup x:Key="mat1" > 
      <DiffuseMaterial > 
       <DiffuseMaterial.Brush > 
        <VisualBrush > 
         <VisualBrush.Visual > 
          <Grid Width="270" Height="638" Background="Red"> 
           <Image Width="270" Height="638" Source="screenshot-1.Png"></Image> 
          </Grid> 
         </VisualBrush.Visual > 
        </VisualBrush > 
       </DiffuseMaterial.Brush > 
      </DiffuseMaterial > 
     </MaterialGroup> 
    </Window.Resources > 
    <Grid> 
     <Viewport3D x:Name="vp" UIElement.ClipToBounds ="False" Height="638" UIElement.IsHitTestVisible ="False" RenderOptions.EdgeMode ="Unspecified" > 
      <Viewport3D.Camera > 
       <PerspectiveCamera x:Name="camera" ProjectionCamera.Position="0,0,5" ProjectionCamera.LookDirection ="0,0,-1" PerspectiveCamera.FieldOfView ="28" /> 
      </Viewport3D.Camera> 
      <Viewport3D.Children > 
       <ModelVisual3D > 
        <ModelVisual3D.Content > 
         <SpotLight PointLightBase.Position="0,0,30" SpotLight.Direction ="0,0,-1" Light.Color ="white" /> 
        </ModelVisual3D.Content> 
       </ModelVisual3D> 

       <ModelVisual3D > 
        <ModelVisual3D.Content > 
         <GeometryModel3D x:Name="gm3d" Material="{StaticResource mat1}" > 
          <GeometryModel3D.Geometry > 
           <MeshGeometry3D x:Name="plane3d" MeshGeometry3D.Normals ="0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1" MeshGeometry3D.TextureCoordinates ="0,1 1,1 1,0 1,0 0,0 0,1" MeshGeometry3D.Positions ="-1,-1,1 1,-1,1 1,1,1 1,1,1 -1,1,1 -1,-1,1" /> 
          </GeometryModel3D.Geometry> 
          <Model3D.Transform > 
           <RotateTransform3D > 
            <RotateTransform3D.Rotation > 
             <AxisAngleRotation3D AxisAngleRotation3D.Axis="0,1,0" AxisAngleRotation3D.Angle ="0" x:Name ="rAngle" /> 
            </RotateTransform3D.Rotation> 
           </RotateTransform3D> 
          </Model3D.Transform> 
         </GeometryModel3D> 
        </ModelVisual3D.Content> 
       </ModelVisual3D> 
      </Viewport3D.Children> 
     </Viewport3D> 

     <Button Height="20" Width="30" VerticalAlignment="Top" HorizontalAlignment="Left" Click="Button_Click_2"></Button> 
    </Grid> 
</Window> 

문제는 이미지 크기가 같이 있어야되는 것입니다 :

actual image 하지만처럼 보인다 이것은 Viewport3D를 사용하는 경우 :

viewport3D image

는, 누군가가 나를 도울 수있을하시기 바랍니다인가?

답변

0

간단한 설명은 사각면에 직사각형 이미지를 넣는 것입니다.

좀 더 자세한 설명은 사용자의 MeshGeometry3D.TextureCoordinates이 직사각형 이미지를 덮는 두 개의 삼각형을 정의한 후 MeshGeometry3D.Positions의 값으로 정의 된 사각형 영역으로 압착하는 것입니다.

이제 원하는 결과에 따라 다양한 솔루션이 있습니다. 단순한 것으로 시작해 보겠습니다.

브러시를 정사각형 이미지로 변경하십시오. 기본적으로 Image.StretchUniform이므로 이미지의 가로 세로 비율은 절약됩니다. 또한 배경을 Transparent으로 변경했습니다.

<MaterialGroup x:Key="mat1" > 
     <DiffuseMaterial > 
      <DiffuseMaterial.Brush > 
       <VisualBrush > 
        <VisualBrush.Visual > 
         <Grid Width="800" Height="800" Background="Transparent"> 
          <Image Source="screenshot-1.Png"></Image> 
         </Grid> 
        </VisualBrush.Visual > 
       </VisualBrush > 
      </DiffuseMaterial.Brush > 
     </DiffuseMaterial > 
    </MaterialGroup>