【问题标题】:Draw smooth line in InkCanvas WPF with Kinect使用 Kinect 在 InkCanvas WPF 中绘制平滑线
【发布时间】:2014-02-01 22:41:45
【问题描述】:

我正在尝试创建一个简单的应用程序来跟踪右手腕位置并在其移动时绘制线条(或者更确切地说是带有曲线的路径)(按下鼠标左键时使用鼠标进行 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>

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

【问题讨论】:

    标签: c# wpf drawing kinect


    【解决方案1】:

    缺少三行解决了我的问题:

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

    【讨论】:

      【解决方案2】:

      我知道你回答了你自己的问题,我只是想说你可以通过自定义TransformSmoothParameters 来增加 Kinect 关节跟踪的“流畅性”。一个很好的教程可以在msdn找到。

      【讨论】:

      • 这真是个好建议!谢谢
      • @santBart 没问题 :)
      猜你喜欢
      • 2013-07-14
      • 1970-01-01
      • 2012-05-16
      • 2011-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多