我有一个 Skeleton 骨架
,它来自 SkeletonFrameReady
事件。而且我有一个在 window 上画骨架的功能,
void DrawSkeleton(Skeleton s),
它将骨架作为输入并将骨架的二维图像绘制到我的窗口。
现在,我想更改右手的 x 和 y 值,并使用相同的函数 void DrawSkeleton(Skeleton s)
将其绘制在窗口上。
但是,当我尝试做类似的事情时:
skeleton.Joints[JointType.HandRight].Position.X = 3;
它不允许我这样做:
Cannot modify the return value of 'Microsoft.Kinect.Joint.Position' because it is not a variable.
这可能是因为 Position
不是变量,而是属性。
问题:
如何复制一个Skeleton
对象并更改该对象上Joint
的Position
值。
最佳答案
是的,你可以。
您只需创建一个新的 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
};
这是一个实际项目中的示例,我们希望在不实际修改骨架的情况下纠正手的位置以调整鼠标
关于c# - Kinect 操纵骨架数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11740275/