add:WinRT墨迹识别

This commit is contained in:
2026-03-28 18:10:28 +08:00
parent ea23145349
commit 97b0972fdf
+13 -7
View File
@@ -1,6 +1,5 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Numerics;
using System.Runtime.InteropServices.WindowsRuntime; using System.Runtime.InteropServices.WindowsRuntime;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Ink; using System.Windows.Ink;
@@ -53,8 +52,13 @@ namespace Ink_Canvas.Helpers
foreach (Stroke s in strokes) foreach (Stroke s in strokes)
{ {
var inkStroke = CreateInkStrokeFromWpf(s); var inkStroke = CreateInkStrokeFromWpf(s);
if (inkStroke != null) if (inkStroke == null)
analyzer.AddDataForStroke(inkStroke); continue;
analyzer.AddDataForStroke(inkStroke);
analyzer.SetStrokeDataKind(
inkStroke.Id,
global::Windows.UI.Input.Inking.Analysis.InkAnalysisStrokeKind.Drawing);
} }
await analyzer.AnalyzeAsync().AsTask().ConfigureAwait(false); await analyzer.AnalyzeAsync().AsTask().ConfigureAwait(false);
@@ -97,15 +101,17 @@ namespace Ink_Canvas.Helpers
var builder = new global::Windows.UI.Input.Inking.InkStrokeBuilder(); var builder = new global::Windows.UI.Input.Inking.InkStrokeBuilder();
builder.SetDefaultDrawingAttributes(wda); builder.SetDefaultDrawingAttributes(wda);
var inkPoints = new List<global::Windows.UI.Input.Inking.InkPoint>(stroke.StylusPoints.Count); var points = new List<global::Windows.Foundation.Point>(stroke.StylusPoints.Count);
foreach (StylusPoint sp in stroke.StylusPoints) foreach (StylusPoint sp in stroke.StylusPoints)
{ {
var pi = sp.ToPoint(); var pi = sp.ToPoint();
inkPoints.Add(new global::Windows.UI.Input.Inking.InkPoint( points.Add(new global::Windows.Foundation.Point((float)pi.X, (float)pi.Y));
new global::Windows.Foundation.Point((float)pi.X, (float)pi.Y), (float)sp.PressureFactor));
} }
return builder.CreateStrokeFromInkPoints(inkPoints, Matrix3x2.Identity); if (points.Count == 0)
return null;
return builder.CreateStroke(points);
} }
private static global::Windows.UI.Input.Inking.Analysis.InkAnalysisInkDrawing FindPrimaryDrawing( private static global::Windows.UI.Input.Inking.Analysis.InkAnalysisInkDrawing FindPrimaryDrawing(