【发布时间】:2016-03-21 03:12:24
【问题描述】:
我正在尝试使用我的 KINECT v2 右手提示位置在画布上绘制线条。我从这行代码中得到了我的右手提示位置。
CameraSpacePoint handtipPosition = handtip.Position;
ColorSpacePoint handtipPoint = _sensor.CoordinateMapper.MapCameraPointToColorSpace(handtipPosition);
这是我绘制线条的代码 sn-p,我已经定义了另一个点来将 X1 和 Y1 坐标提供给我的线条
ColorSpacePoint PreviousPoint;
line.X1 = PreviousPoint.X; // ERROR 'Use of possibly Unassigned field X'
line.Y1 = PreviousPoint.Y; // ERROR 'Use of possibly Unassigned field Y'
line.X2 = handtipPoint.X;
line.Y2 = handtipPoint.Y;
PreviousPoint = handtipPoint;
canvas.Children.Add(line);
但是当我使用 PreviousPoint 为我的 X1 和 Y1 参数分配坐标时,我得到错误“使用可能未分配的字段 X”(我猜这是因为 PreviousPoint 在开始时没有值)并且如果我修复了 previousPoint 值对于 X 和 Y 到 0,在我的画布上,我从一个固定点 (0,0) 画线,因为只有 X2 和 Y2 跟随我的手位置。
请帮我纠正这种情况,感谢任何建议和帮助。
【问题讨论】:
-
从您发布的小代码来看,错误是正确的:您声明了一个局部变量
PreviousPoint,然后在初始化之前尝试使用它。如果没有一个好的minimal reproducible example,就不清楚你需要修复什么。如果您想要上一点,则需要将变量放在可以持续更长时间的地方(例如实例字段),将其初始化一次,然后在收到两个之前不要画线不同的点。我看不出这个问题与 Kinect 有什么关系。您从 Kinect API 获得积分似乎与实际问题无关。 -
我希望只初始化一次previouspoint值,因为一开始它没有值。但是在事件处理程序触发后,kinect 传感器将提供关节位置,最终将填充上一个点。在那之前我只想实例化它一次,这样我就不会收到空对象错误。
标签: c# wpf canvas kinect lines