Sink1是一个inklines容器,它没有绑定(bind)到inkcanvas(我也尝试将它绑定(bind)到inkcanvas以避免异常,但仍然没用)。 ink1 是 xaml 上的 inkcanvas。
public sealed partial class wpage : Page
{
public wpage()
{
this.InitializeComponent();
ink1.InkPresenter.StrokeContainer = inkStrokeContainer1;
ink1.InkPresenter.StrokesCollected += InkPresenter_StrokesCollected;
ink1.InkPresenter.InputDeviceTypes = CoreInputDeviceTypes.Pen | CoreInputDeviceTypes.Mouse;
}
public void InkPresenter_StrokesCollected(InkPresenter sender, InkStrokesCollectedEventArgs args)
{sink1.Clear();
sink1.AddStrokes(args.Strokes);
}
}
above code will cause an
#if DEBUG && !DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION
UnhandledException += (sender, e) =>
{
if (global::System.Diagnostics.Debugger.IsAttached) global::System.Diagnostics.Debugger.Break();
我也尝试过:
public async void InkPresenter_StrokesCollected(InkPresenter sender, InkStrokesCollectedEventArgs args)
{ await CoreApplication.MainView.Dispatcher.RunAsync(CoreDispatcherPriority.Low, new DispatchedHandler(() =>
{ {sink1.Clear();
sink1.AddStrokes(args.Strokes);
});
}
但还是没用也用炸弹
#if DEBUG && !DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION
UnhandledException += (sender, e) =>
{
if (global::System.Diagnostics.Debugger.IsAttached) global::System.Diagnostics.Debugger.Break(); .
我还尝试在 taks.run 和 Dispatcher.RunAsync 中运行它们,也是炸弹。 我这样做是因为我需要使用 inkrinklecontainer 类中的 save 方法序列化 isf 格式的 inklines,使用其他方法序列化结果大小太大。
最佳答案
the Sink1 is a inkstrokecontainer, it does not binding to an inkcanvas
这就是问题的原因。
sink1
和 ink1.InkPresenter.StrokeContainer
不是相同的 InkStrokeContainer
,这意味着 Stroke
中的 InkCanvas
无法直接添加到另一个 StrokeContainer
。
您可以尝试修改您的代码:
private void InkPresenter_Collect(InkPresenter sender, InkStrokesCollectedEventArgs args)
{
sink1.Clear();
foreach (var item in args.Strokes)
{
sink1.AddStroke(item.Clone());
}
}
简单来说,屏幕上已经显示的Stroke
属于ink1
,你不能将它添加到另一个InkStrokeContainer
中,但是你可以获取它的克隆对象,克隆的对象不属于ink1
,你可以添加它。
致以诚挚的问候。
关于连续操作 inkstrorkecontainer.clear() 和 addlines() 导致 UWP 中出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58679922/