2012-07-31 18 views
5

Mam Skeleton skeleton, które pochodzi z wydarzenia SkeletonFrameReady. I mam funkcji do rysowania szkielety w oknach,Kinect manipuluje danymi szkieletu

void DrawSkeleton(Skeleton s), 

która przyjmuje szkielet jako wejście i rysuje obraz 2D szkielet do mojego okna.

Teraz chcę zmienić, na przykład, wartość x i y prawej ręki i narysować ją w oknie przy użyciu tej samej funkcji, void DrawSkeleton(Skeleton s).

Jednak, gdy próbuję zrobić coś takiego:

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

To nie pozwala mi to zrobić:

Nie można modyfikować wartości zwracanej „Microsoft.Kinect.Joint. Pozycja ", ponieważ nie jest zmienną.

co jest prawdopodobnie spowodowane tym, że Position nie jest zmienną, jest właściwością.

Pytanie:

Jak mogę powielić Skeleton obiekt i zmienić wartości Position z Joint s na tym obiekcie.

Odpowiedz

5

Tak, można.

Po prostu utworzymy nowy obiekt położenia i nadpisamy pozycję, którą lubimy.

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

var movedJoint = new Joint 
{ 
    Position = movedPosition 
}; 

To jest przykład z rzeczywistego projektu gdzie chcieliśmy poprawić pozycję strony w celu dostosowania myszy bez powodowania zmian szkieletu

Powiązane problemy