0

一部のデータを小さなビットマップにレンダリングするプログラムを作成していKinectます (記録されたジェスチャ プレビュー\フレーム プレビュー)。マップされた Kinect データを画面に格納するクラスがあります (X = [0; 1]、Y = [0、1]); ここで、データを小さなビットマップに描画し、フォームに表示したいと考えています。問題は「作成された」ビットマップです...空(透明)です。

それは私のマッピングされたデータクラスです:

public class MappedJointData
{
    public JointType JointType { get; set; }
    public PointF MappedPosition { get; set; }
    public int Depth { get; set; }
    public JointTrackingState JointTrackingState { get; set; }
    public bool Seated { get; set; }
}

次に、データからビットマップを返す拡張クラスを作成しました。

public static Bitmap ToBitmap(this RecordedSkeletonFrame frame, int width, int height)
{
    return DrawBonesAndJoints(frame.MappedJointData, width, height);
}

private static Bitmap DrawBonesAndJoints(List<MappedJointData> mappedJointData, int width, int height)
{
    Bitmap b = new Bitmap(width, height);
    using (Graphics g = Graphics.FromImage(b))
    {
        g.CompositingQuality = CompositingQuality.HighQuality;
        g.Clear(Color.Black);

        // (...)
        g.DrawEllipse(new Pen(drawBrush), joint.MappedPosition.X, joint.MappedPosition.Y, 3, 3);

        // (...)
        g.DrawLine(drawPen, joint0.MappedPosition.X, joint0.MappedPosition.Y, joint1.MappedPosition.X, joint1.MappedPosition.Y);
    }
    return b;
}

記録が成功したら、マップされたデータを調べてビットマップを描画します。

foreach (RecordedSkeletonFrame frame in _gestureRecorder.Frames)
{
    FrameImages.Add(frame.ToBitmap(100, 75));
}

FrameImagesObservableCollection<Bitmap>にバインドされているのは私のものですListView(すでにレンダリングされた画像を使用してテストしたため、バインディングは機能するはずです)。

なぜ機能しないのですか?私はウェブで何かを見つけようとしましたが、人々は私とまったく同じようにこれを行います. どこに問題があるのか​​わからない。レンダリングされたデータが悪い場合でも (ただし、ブレークポイントを設定して と の値をチェックしていませんXY)、g.Clear(Color.Black);ビットマップを黒くする必要がありますか?

4

1 に答える 1

0

あなたの問題は、貼り付けられたコード部分にはないはずです。どういうわけか、FrameImages などのデータを失う/上書きします。使用とグラフィックの部分は間違いなく機能するはずです。

于 2013-01-16T23:21:31.720 に答える