2012-06-21 134 views
3

我正在嘗試創建一個應用程序,它可以放大和縮小圖像,並通過Kinect進行旋轉。到目前爲止,它適用於任何一種情況或案例。我想要的是,如果我旋轉了圖像,那麼當我縮放時,該新值將被保存,所以我放大旋轉了X度的圖像。我現在擁有它的方式,如果我先旋轉然後嘗試縮放,則圖像會返回到初始階段。使用Kinect進行圖像處理

 private void TrackDistances(Skeleton skeleton) 
     { 
     if (skeleton.TrackingState == SkeletonTrackingState.Tracked) 
     { 
      ... 
      if (wristLeft.Y > shoulderLeft.Y && wristRight.Y > shoulderRight.Y) 
      { 
       float distance = Math.Abs(wristLeft.X - wristRight.X); 
       image_Zoom(distance); 
      } 

      if (wristLeft.Y < shoulderLeft.Y && wristRight.Y < shoulderRight.Y) 
      { 
       angleDeg = GetJointAngle(zeroPoint, anglePoint); 
       image_Rotate(angleDeg); 
      } 
     } 
    } 
    private void image_Zoom(float distance) 
    { 
     //TransformGroup transformGroup = (TransformGroup)image.RenderTransform; 
     //ScaleTransform scale = (ScaleTransform)transformGroup.Children[0]; 
     //double zoom = distance * 1.5; 
     //scale.ScaleX = zoom; 
     //scale.ScaleY = zoom; 

     double zoom = distance * 1.5; 
     double ScaleX = zoom; 
     double ScaleY = zoom; 
     ScaleTransform scale = new ScaleTransform(ScaleX, ScaleY); 
     image.RenderTransform = scale; 
    } 

    private void image_Rotate(double angleDeg) 
    { 
     var angle = angleDeg - 180; 
     RotateTransform rotate = new RotateTransform(angle); 
     image.RenderTransform = rotate; 
    } 

有什麼建議嗎?

謝謝!

回答

0

我認爲這是因爲您將RenderTransform更改爲ScaleTranform或RotateTransform。 您可以在XAML中設置圖像的ScaleTransform和RotateTransform,只需在後面的代碼中更改角度或縮放參數即可。

也看到這裏: How can I do both zoom and rotate on an inkcanvas?