3

画像をズームインおよびズームアウトし、Kinect を介して回転するアプリケーションを作成しようとしています。これまでのところ動作しますが、いずれかまたはケースの場合です。私が望むのは、画像を回転させた場合、ズーム時にその新しい値が保存されるため、X 度回転した画像をズームすることです。今のやり方だと、回転させてからズームしようとすると、画像が最初の段階に戻ってしまいます。

        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;
    }

助言がありますか?

ありがとう!

4

1 に答える 1

0

RenderTransform を ScaleTranform または RotateTransform に変更したためだと思います。XAML で画像の ScaleTransform と RotateTransform を設定し、コード ビハインドで角度またはズーム パラメーターを変更するだけです。

ここも参照してください: インクキャンバスでズームと回転の両方を行うにはどうすればよいですか?

于 2012-07-12T12:56:10.940 に答える