一部のデータを小さなビットマップにレンダリングするプログラムを作成してい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));
}
FrameImages
ObservableCollection<Bitmap>
にバインドされているのは私のものですListView
(すでにレンダリングされた画像を使用してテストしたため、バインディングは機能するはずです)。
なぜ機能しないのですか?私はウェブで何かを見つけようとしましたが、人々は私とまったく同じようにこれを行います. どこに問題があるのかわからない。レンダリングされたデータが悪い場合でも (ただし、ブレークポイントを設定して と の値をチェックしていませんX
かY
)、g.Clear(Color.Black);
ビットマップを黒くする必要がありますか?