本文介绍了[uwp] [Xaml]如何将墨迹转换为点| InkingManager的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用以下代码作为我的签名板。我想要的是,我想转换路径到点我怎么能!谢谢!


https://social.msdn.microsoft.com/Forums/vstudio/en-US/94c0497e-6363-4c87-a071-5d9576764820/w81ctouch-doesnt-work?forum = wpdevelop

 private void RenderAllStrokes()
{
try
{
//清除画布。

//获取InkStroke对象。
IReadOnlyList< InkStroke> inkStrokes = _inkManager.GetStrokes();
InkStrokeBuilder inkstkbuilder = new InkStrokeBuilder();
//处理每个笔划。
foreach(InkStroke中的InkStroke inkStroke)
{
PathGeometry pathGeometry = new PathGeometry();
PathFigureCollection pathFigures = new PathFigureCollection();
PathFigure pathFigure = new PathFigure();
PathSegmentCollection pathSegments = new PathSegmentCollection();

//创建路径并定义其属性。
// Windows.UI.Xaml.Shapes.Path path = new Windows.UI.Xaml.Shapes.Path();
Path path = new Path();
path.Stroke = new SolidColorBrush(Colors.Black);
path.StrokeThickness = STROKETHICKNESS;

//获取笔划段。
IReadOnlyList< InkStrokeRenderingSegment>段;
segments = inkStroke.GetRenderingSegments();

//处理每个笔划段。
bool first = true;
foreach(段中的InkStrokeRenderingSegment段)
{
//第一段是路径的起点。
if(first)
{
pathFigure.StartPoint = segment.BezierControlPoint1;
first = false;
}

//将每个墨水段复制到贝塞尔曲线段。
BezierSegment bezSegment = new BezierSegment();
bezSegment.Point1 = segment.BezierControlPoint1;
bezSegment.Point2 = segment.BezierControlPoint2;
bezSegment.Point3 = segment.Position;

//将贝塞尔曲线段添加到路径中。
pathSegments.Add(bezSegment);
}

//构建路径geometerty对象。
pathFigure.Segments = pathSegments;
pathFigures.Add(pathFigure);
pathGeometry.Figures = pathFigures;

//将路径几何对象指定为路径数据。
path.DataContext = pathGeometry;

//通过将路径添加为Canvas对象的子项来渲染路径。
InkCanvas.Children.Add(path);
}
}
catch(exception ex)
{
Debug.WriteLine(ex.Message,ex.StackTrace);
}
}




Charu

解决方案


这篇关于[uwp] [Xaml]如何将墨迹转换为点| InkingManager的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-28 00:23