我正在尝试创建一个简单的应用程序,用于跟踪右手腕位置并在移动时绘制线条(或者更确切地说是带曲线的路径)(按下鼠标左键时使用鼠标的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>
用鼠标绘图的结果是平滑的“线”。
答案 0 :(得分:1)
三条缺失的线条解决了我的问题:
line.StrokeDashCap = PenLineCap.Round;
line.StrokeStartLineCap = PenLineCap.Round;
line.StrokeEndLineCap = PenLineCap.Round;
答案 1 :(得分:1)
我知道你回答了自己的问题,我只想说你可以通过自定义TransformSmoothParameters
来增加Kinect联合跟踪的“平滑度”。可以在msdn找到一个很好的教程。