使用Kinect在InkCanvas WPF中绘制流畅的线条

时间:2014-02-01 22:41:45

标签: c# wpf drawing kinect

我正在尝试创建一个简单的应用程序,用于跟踪右手腕位置并在移动时绘制线条(或者更确切地说是带曲线的路径)(按下鼠标左键时使用鼠标的InkCanvas控件的确切行为)。

所以我跟踪RightWrist的位置变化并以这种方式画线:

public void Paint(Point startPoint, Point nextPoint, InkCanvas paintSurface)
    {
        Line line = new Line();
        if (currentPoint.X == 0 && currentPoint.Y == 0)
        {
            currentPoint = new Point();
            currentPoint = startPoint;
        }

        line.Stroke = new SolidColorBrush(currentColor);

        line.StrokeThickness = 10;

        line.X1 = currentPoint.X;
        line.Y1 = currentPoint.Y;
        line.X2 = nextPoint.X;
        line.Y2 = nextPoint.Y;

        currentPoint = nextPoint;

        paintSurface.Children.Add(line);
    }

使用StrokeThickness = 1时没有问题。如果笔划较大,则曲线上的线条不平滑(而是使用小部件构建),而我希望获得与使用鼠标绘制InkCanvas并将其绘图属性设置为此相同的结果:

<InkCanvas.DefaultDrawingAttributes>
                <DrawingAttributes x:Name="attribute" Width="10" Height="10" Color="Green"  />
            </InkCanvas.DefaultDrawingAttributes>

用鼠标绘图的结果是平滑的“线”。

2 个答案:

答案 0 :(得分:1)

三条缺失的线条解决了我的问题:

line.StrokeDashCap = PenLineCap.Round; 
line.StrokeStartLineCap = PenLineCap.Round; 
line.StrokeEndLineCap = PenLineCap.Round; 

答案 1 :(得分:1)

我知道你回答了自己的问题,我只想说你可以通过自定义TransformSmoothParameters来增加Kinect联合跟踪的“平滑度”。可以在msdn找到一个很好的教程。