2014-07-16 2 views
1

kinect 센서의 색상과 깊이 스트림을 표시하는 프로그램을 작성했습니다. 심도 이미지에서는 사용자가 두 점을 선택할 수 있으며 프로그램은 점의 좌표를 표시합니다. 이제 프로그램을 개선하고 싶습니다. 그래서 Disatance.xaml이라는 새 창이 추가되었습니다. 사용자가 선택란을 체크하면이 창이 열립니다. 이 창에서 MainWindow가 아닌 ​​좌표를 보여주고 싶습니다. 그래서 x 좌표와 y 좌표의 정수 변수를 전달해야합니다. 내 문제는 이제 C#을 처음 접했을 뿐이고 한 창에서 다른 창으로 정수를 전달하는 방법을 모르겠다. 나는 정말로 누군가가 나를 도울 수있는 방법. 주 코드는 주 창에서 실행됩니다. 버튼을 클릭하여 두 번째 창을 엽니 다. 내 코드는 다음과 같습니다WPF 새 창에서 변수 표시

private void CmdDistance_Click(object senderr, RoutedEventArgs e) 
    { 
      Distance distance = new Distance(); 
      distance.Show(); 
    } 

좌표 무효 Mouse_ClickTest 현재 calculatet하고 내 기능에 의해 표시 :

private void Mouse_ClickTest(object sender, System.Windows.Input.MouseEventArgs e) 
    { 
     if (ChkDistance.IsChecked == true) 
     { 
      System.Windows.Point myMousePosition = e.GetPosition(DepthImage); 

      double xpixel = myMousePosition.X; 
      double ypixel = myMousePosition.Y; 
      int xpos = (int)xpixel; 
      int ypos = (int)ypixel; 
      if ((xpos > 0 || ypos > 0) && (xpos <= 640 || ypos <= 480)) 
      { 
       int depthWidth = mySensor.DepthStream.FrameWidth; 
       int depthIndex = xpos + (ypos * depthWidth); 
       if (depthIndex < 307840) 
       { 
        SkeletonPoint mySkeletonArray = this.mySkeletonArray[depthIndex]; 
        float zpos = mySkeletonArray.Z; 
        zpos = zpos * 1000; 
        int z = (int)zpos; 
        float xp = mySkeletonArray.X; 
        xp = xp * 1000; 
        int x = (int)xp; 
        float yp = mySkeletonArray.Y; 
        yp = yp * 1000; 
        int y = (int)yp; 
        if (e.LeftButton == MouseButtonState.Pressed) 
        { 
         if (i == false) 
         { 
          TxtCoordX.Text = string.Format("X: {0}", x); 
          TxtCoordY.Text = string.Format("Y: {0}", y); 
          TxtCoordZ.Text = string.Format("Z: {0}", z); 
          i = true; 
         } 
         else 
         { 
          TxtCoordX2.Text = string.Format("X: {0}", x); 
          TxtCoordY2.Text = string.Format("Y: {0}", y); 
          TxtCoordZ2.Text = string.Format("Z: {0}", z); 
          i = true; 
         } 
        } 
       } 
       else 
       { 
        return; 
       } 
      } 
      else 
      { 
       return; 
      } 
     } 
    } 

가 지금은 윈도우의 거리에 변수 x, y 및 z 정수를 전달하려면

+0

두 개의 창이 있습니까? 이 두 창은 어떻게 만듭니 까? 그 중 하나가 다른 대화 상자에서 열리는 대화입니까? 당신이 시도한 코드를 보여줄 수 있습니까? – Default

답변

0
  1. MainWindow 클래스의 범위에 Distance 클래스가 높은 선언합니다. 클릭 핸들러가 실행을 완료하면 바로 지금 가지고있는 방식대로 생성되고 범위를 벗어납니다.

  2. 당신이 물어 보는 것 중 가장 빠르고 더러운 방법은 거리 양식의 코드 숨김에 메서드를 만드는 것입니다. 그런 다음 해당 속성에 TextBlocks 또는 텍스트 상자를 만들 수 있습니다 { // 설정 여기 속성}

(Z 플로트, 플로트 X, 플로트 y)를

공공 무효 SetCoordinates : 그것은 뭔가를 할 수 .

대신 :

new Distance(); 

해야 할 것 :

new Distance(float x, float y, float z); 

  1. 또한 생성자를 전달하여 값 X, Y, Z를 초기화 할 수 있습니다

    그런 다음 TextBlocks 또는 TextBoxes를 해당 속성으로 만들 수 있습니다.