2012-06-21 84 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?