图形不会在Bitmap上绘制

时间:2013-01-16 22:41:31

标签: c# wpf graphics bitmap drawing

我正在编写一个程序,将一些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>的{​​{1}}(绑定应该有效,因为我使用已经渲染的图像对其进行了测试)。

为什么不工作?我试图在网上找到一些东西,但是ppl就像我一样。我不知道问题出在哪里。即使我的渲染数据不好(但我没有设置断点并检查ListViewX的值),Y会使我的位图变黑吗?

1 个答案:

答案 0 :(得分:0)

我确定您的问题不在粘贴的代码部分中。不知何故,你丢失/覆盖了FrameImages中的数据或类似的东西。使用和图形部分一定能够正常工作。