C# Kinect操作骨骼数据
我有一个C# Kinect操作骨骼数据,c#,.net,kinect,C#,.net,Kinect,我有一个Skeleton骨架,它来自SkeletonFrameReady事件。我有一个在窗户上画骨架的功能 void DrawSkeleton(Skeleton s), 它将骨架作为输入,并将骨架的二维图像绘制到我的窗口 现在,我想更改,例如,右手的x和y值,并使用相同的函数,void DrawSkeleton(Skeleton s)在窗口上绘制它 但是,当我尝试做以下事情时: skeleton.Joints[JointType.HandRight].Position.X = 3; 它不允许
Skeleton骨架
,它来自SkeletonFrameReady
事件。我有一个在窗户上画骨架的功能
void DrawSkeleton(Skeleton s),
它将骨架作为输入,并将骨架的二维图像绘制到我的窗口
现在,我想更改,例如,右手的x和y值,并使用相同的函数,void DrawSkeleton(Skeleton s)
在窗口上绘制它
但是,当我尝试做以下事情时:
skeleton.Joints[JointType.HandRight].Position.X = 3;
它不允许我这样做:
无法修改“Microsoft.Kinect.Joint.Position”的返回值,因为它不是变量
这可能是因为Position
不是一个变量,而是一个属性
问题:
如何复制骨架
对象并更改该对象上关节
的位置
值。可以
您只需创建一个新的位置对象并覆盖您喜欢的位置
var movedPosition = new SkeletonPoint
{
X = (float)(mouseJoint.Position.X - 0.4),
Y = (float)(mouseJoint.Position.Y - 0.3)
};
var movedJoint = new Joint
{
Position = movedPosition
};
这是一个来自实际项目的示例,在该项目中,我们希望在不实际修改骨架的情况下更正手的位置以调整鼠标