0

Windows SDKを使用してkinectで1つのプロジェクトを行っています。次のコードでスケルトンの肩に画像を表示しようとしています。**

Xaml コード

<Canvas Margin="250,0,0,0" Visibility="{Binding Path=Showcamera, Converter={StaticResource BVC}}" Background="Green" HorizontalAlignment="Stretch" VerticalAlignment="Top" Grid.Column="1" Grid.Row="1">

        <Image MaxHeight="600" MaxWidth="950" x:Name="PART_KinectVideo"  Visibility="{Binding Path=Showcamera, Converter={StaticResource BVC}}"  />
        <Canvas>
        <Image  RenderOptions.BitmapScalingMode="HighQuality" Visibility="{Binding Path=Showcamera, Converter={StaticResource BVC}}"
            RenderOptions.EdgeMode="Aliased"  Canvas.Top="60" Canvas.Left="350"  Stretch="Uniform" x:Name="Jewel"/>
        </Canvas>

コードビハインド

var j1p = nui.MapSkeletonPointToDepth(closestSkeleton.Joints[JointType.ShoulderLeft].Position,DepthImageFormat.Resolution640x480Fps30);

 Canvas.SetLeft(Jewel, j1p.X+90);
 Canvas.SetTop(Jewel, j1p.Y-280);

j1p 値を取得することで、ジュエル イメージ オブジェクトのキャンバスの左と上の位置を設定しようとしています。

コードの問題は次のとおりです。

これは画像を正しく配置していません。ユーザーが画面内を移動すると、ユーザーの移動に伴って画像も左右の方向に体外に移動します。

ユーザーが右または左に移動しても、画像をその位置に設定する必要があります。
コードをどのように変更すればよいですか、または kinect ジョイントの特定の位置に画像を設定するために利用できるサンプルはありますか?

4

1 に答える 1

0

多分これを試してみてください:

var left = (double)image.GetValue(Canvas.LeftProperty)
left += 90;
image.SetValue(Canvas.LeftProperty, left);

私はそのコードを使用してアプリを作成しましたが、すべてがうまくいきました:)

于 2012-09-05T07:28:12.187 に答える