我正在将应用程序从 javascript 移植到 UWP c#,并且正在努力使用新的InkCanvas。如果您熟悉 UWP 中的新 InkCanvas,我将非常感谢您的帮助。这是我编写的将 InkStroke 渲染到 Canvas 上的代码。
public static void Bezier(Canvas canvas, InkStroke stroke)
{
var segments = stroke.GetRenderingSegments();
PathFigure pthFigure = new PathFigure() { StartPoint = new Point(segments[0].Position.X, segments[0].Position.Y)};
for (int i = 1; i < segments.Count; i++)
{
var segment = segments[i];
var bezier = new BezierSegment();
bezier.Point1 = new Point(segment.BezierControlPoint1.X, segment.BezierControlPoint1.Y);
bezier.Point2 = new Point(segment.BezierControlPoint2.X, segment.BezierControlPoint2.Y);
bezier.Point3 = new Point(segment.Position.X, segment.Position.Y);
pthFigure.Segments.Add(bezier);
}
PathGeometry pthGeometry = new PathGeometry();
pthGeometry.Figures.Add(pthFigure);
Path path = new Path();
//path.Stroke = new SolidColorBrush(stroke.DrawingAttributes.Color);
//path.StrokeThickness = stroke.DrawingAttributes.Size.Height;
path.Stroke = new SolidColorBrush(Colors.Red);
path.StrokeThickness = 1;
path.Data = pthGeometry;
canvas.Children.Add(path);
}
不幸的是,控制点似乎搞砸了,我不明白为什么。
您可以在下面看到我运行此代码的图像。黑色笔划是最初在 InkCanvas 中渲染的,红色笔划是上面代码中在 Canvas 上渲染的笔划。
黑色笔划是最初在 InkCanvas 中渲染的,红色笔划是上面代码中在 Canvas 上渲染的笔划
任何人都知道我做错了什么?