2012-07-31 12 views
5

J'ai un Skeleton skeleton qui provient de l'événement SkeletonFrameReady. Et j'ai une fonction pour dessiner des squelettes sur les fenêtres,Kinect Manipuler des données squelette

void DrawSkeleton(Skeleton s), 

qui prend le squelette comme l'entrée et dessine l'image 2D du squelette à ma fenêtre.

Maintenant, je veux changer, par exemple, la valeur x et y de la main droite et dessiner sur la fenêtre en utilisant la même fonction, void DrawSkeleton(Skeleton s).

Cependant, lorsque je tente de faire quelque chose comme:

skeleton.Joints[JointType.HandRight].Position.X = 3; 

Il ne me permet pas de le faire:

Impossible de modifier la valeur de retour de « Microsoft.Kinect.Joint. Position 'parce que ce n'est pas une variable.

ce qui est probablement dû au fait que Position n'est pas une variable, est une propriété.

Question:

Comment puis-je dupliquer un objet Skeleton et modifier les valeurs de PositionJoint s sur cet objet.

Répondre

5

Oui, vous pouvez.

Vous créez simplement un nouvel objet Position et écrasez la position que vous aimez.

var movedPosition = new SkeletonPoint 
{ 
    X = (float)(mouseJoint.Position.X - 0.4), 
    Y = (float)(mouseJoint.Position.Y - 0.3) 
}; 

var movedJoint = new Joint 
{ 
    Position = movedPosition 
}; 

Voici un exemple d'un projet réel où nous voulions corriger la position de la main pour ajuster la souris sans modifier le squelette

Questions connexes