2013-05-06 2 views
1

이 도구를 사용하는 방법을 배우려면 C#으로 WPF로 삼각형을 그려야합니다. 마지막 문장을 확인하면 프로그램 때문에 실행할 수 없습니다. 나는 using 지시문 또는 어쩌면 어셈블리 참조 ...C#에서 WPF의 지시문 또는 어셈블리 참조를 사용하지 않음

을 잃었 생각이 사용 지침 내가 사용하고 있습니다 : 여기

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Imaging; 
using System.Windows.Navigation; 
using System.Windows.Shapes; 
using System.Windows.Media.Media3D; 

내 코드입니다 :에

System.Windows.Media.Media3D.Point3D point0 = new Point3D(-0.5, 0, 0); 
System.Windows.Media.Media3D.Point3D point1 = new Point3D(0.5, 0.5, 0.3); 
System.Windows.Media.Media3D.Point3D point2 = new Point3D(0, 0.5, 0); 


System.Windows.Media.Media3D.MeshGeometry3D triangleMesh = new MeshGeometry3D(); 

triangleMesh.Positions.Add(point0); 
triangleMesh.Positions.Add(point1); 
triangleMesh.Positions.Add(point2); 

int n0 = 0; 
int n1 = 1; 
int n2 = 2; 

triangleMesh.TriangleIndices.Add(n0); 
triangleMesh.TriangleIndices.Add(n1); 
triangleMesh.TriangleIndices.Add(n2); 

System.Windows.Media.Media3D.Vector3D norm = new Vector3D(0, 0, 1); 
triangleMesh.Normals.Add(norm); 
triangleMesh.Normals.Add(norm); 
triangleMesh.Normals.Add(norm); 

System.Windows.Media.Media3D.Material frontMaterial = new DiffuseMaterial(new SolidColorBrush(Colors.Blue)); 

System.Windows.Media.Media3D.GeometryModel3D triangleModel = new GeometryModel3D(triangleMesh, frontMaterial); 

triangleModel.Transform = new Transform3DGroup(); 

System.Windows.Media.Media3D.ModelVisual3D visualModel = new ModelVisual3D(); 
visualModel.Content = triangleModel; 

this.mainViewport.Children.Add(visualModel); // here I have an error ! 
+0

어디에서'mainViewport'를 선언 했습니까? 편집 : 문제는 당신이'using' 문을 놓치고 있다고 생각하지 않습니다. 문제는'mainViewport'가 접근 가능한 범위에서 선언되지 않았다는 것입니다. –

+0

나는 그것을 선언하지 않았다. 실제로이 코드를 구현하면 프로그램이 작동해야한다는 2 개의 별개의 자습서가 있습니다 ... 그렇게해야한다면 mainViewport를 어떻게 선언 할 수 있습니까? – ahmad

+0

관련 컨트롤에 대해 XAML에서 선언했거나 이름을 지정 했습니까? –

답변

0

은 xaml 파일이 그리드를 덮어 쓰면 검은 색 삼각형이 나타납니다. 나는 그것을 시험했다.

<Grid> 
     <Viewport3D Name="mainViewport" ClipToBounds="True"> 
      <Viewport3D.Camera> 
       <PerspectiveCamera 
    FarPlaneDistance="100" 
    LookDirection="-11,-10,-9" 
    UpDirection="0,1,0" 
    NearPlaneDistance="1" 
    Position="11,10,9" 
    FieldOfView="70" /> 
      </Viewport3D.Camera> 
      <ModelVisual3D> 
       <ModelVisual3D.Content> 
        <DirectionalLight 
    Color="White" 
    Direction="-2,-3,-1" /> 
       </ModelVisual3D.Content> 
      </ModelVisual3D> 
     </Viewport3D> 
</Grid> 
+0

필자의 xaml 파일에서 그리드를 덮어 썼는데 이상하게도 작동하지 않습니다. 이 오류 메시지는 다음과 같습니다. " ''WpfApplication1.mainWindow '에는'mainViewport '에 대한 정의가없고'WpfApplication1.mainWindow '형식의 첫 번째 인수를 허용하는'mainViewport '확장 메서드가 없습니다." 두 번째 줄 "mainViewport"에서 선언했기 때문에 이상합니다 ... – ahmad

+0

응용 프로그램을 실행하기 전에 삼각형을 그려야합니까, 아니면 삼각형이 스스로 팝업해야합니까? – ahmad

+0

이상적으로는 프로그래밍 방식으로 xaml 외부에서 시도한 방식대로 수행 할 것입니다. – Drew

0

그것은 나에게 효과가 없습니다. 하지만 마지막 문장을 다음 코드로 대체하면 mainViewport를 선언 한 이후 오류가 표시되지 않지만 프로그램을 실행하면 삼각형이 표시되지 않습니다! (필자의 xaml 파일은 Drew Pierce가 작성한 것과 같습니다.)

삼각형이 표시되지 않는 이유는 무엇입니까?

 System.Windows.Media.Media3D.Viewport3DVisual mainViewport = new Viewport3DVisual(); 

     mainViewport.Children.Add(visualModel); 
관련 문제