WXRIW / Ink-Canvas

A fantastic Ink Canvas in WPF/C#, with fantastic support for Seewo Boards.
GNU General Public License v3.0
230 stars 56 forks source link

虚线绘制问题导致的不稳定运行 #95

Closed KremeCN closed 8 months ago

KremeCN commented 1 year ago

复现步骤

  1. 进入画板模式
  2. 选择虚线绘制(线状虚线与点状虚线均有,长按保持选中或单击均有)
  3. 单点书写区域而不移动手指

复现结果

画板运行不稳定,我这边是100%复现,只要保证手指单击不移动。 P.S.该bug只在触屏时出现,鼠标没有问题。

日志

2023-10-21T15:44:16.7935209+08:00 [Info] Ink Canvas Starting (Version: 3.7.2.0) 2023-10-21T15:44:17.3684391+08:00 [Event] Ink Canvas Loaded 2023-10-21T15:44:22.3244855+08:00 [Info] System.ArgumentNullException: 值不能为 null。 参数名: stroke 在 System.Windows.Ink.StrokeCollection.InsertItem(Int32 index, Stroke stroke) 在 System.Collections.ObjectModel.Collection`1.Add(T item) 在 Ink_Canvas.MainWindow.inkCanvas_MouseUp(Object sender, MouseButtonEventArgs e) 位置 C:\Users\wxriw\source\repos\Ink Canvas\Ink Canvas\MainWindow.xaml.cs:行号 5400 在 Ink_Canvas.MainWindow.Main_Grid_TouchUp(Object sender, TouchEventArgs e) 位置 C:\Users\wxriw\source\repos\Ink Canvas\Ink Canvas\MainWindow.xaml.cs:行号 5107 在 System.Windows.Input.TouchEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget) 在 System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target) 在 System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs) 在 System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised) 在 System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args) 在 System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args) 在 System.Windows.UIElement.RaiseEvent(RoutedEventArgs args, Boolean trusted) 在 System.Windows.Input.InputManager.ProcessStagingArea() 在 System.Windows.Input.InputManager.ProcessInput(InputEventArgs input) 在 System.Windows.Input.TouchDevice.RaiseTouchUp() 在 System.Windows.Input.TouchDevice.ReportUp() 在 System.Windows.Input.StylusWisp.WispLogic.PromoteMainUpToTouch(WispStylusDevice stylusDevice, StagingAreaInputItem stagingItem) 在 System.Windows.Input.StylusWisp.WispLogic.PromoteMainToTouch(ProcessInputEventArgs e, StylusEventArgs stylusEventArgs) 在 System.Windows.Input.StylusWisp.WispLogic.PromoteMainToOther(ProcessInputEventArgs e) 在 System.Windows.Input.StylusWisp.WispLogic.PostProcessInput(Object sender, ProcessInputEventArgs e) 在 System.Windows.Input.InputManager.RaiseProcessInputEventHandlers(ProcessInputEventHandler postProcessInput, ProcessInputEventArgs processInputEventArgs) 在 System.Windows.Input.InputManager.ProcessStagingArea() 在 System.Windows.Input.InputManager.ProcessInput(InputEventArgs input) 在 System.Windows.Input.StylusWisp.WispLogic.InputManagerProcessInput(Object oInput) 在 System.Windows.Input.StylusWisp.WispLogic.PreProcessInput(Object sender, PreProcessInputEventArgs e) 在 System.Windows.Input.InputManager.ProcessStagingArea() 在 System.Windows.Input.InputManager.ProcessInput(InputEventArgs input) 在 System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport) 在 System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel) 在 System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled) 在 System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) 在 MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) 在 MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o) 在 System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) 在 System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

clover-yan commented 1 year ago

推测是实际没有绘制墨迹,使得 TimeMachine 记录了空笔迹造成的。

根据我之前的测试,双曲线等也能触发相关问题。

KremeCN commented 1 year ago

刚刚发现,触发bug后点击任意按钮40次画板就会恢复正常。(?)

WXRIW commented 1 year ago

刚刚发现,触发bug后点击任意按钮40次画板就会恢复正常。(?)

这么 Amazing 的吗

Raspberry-Monster commented 8 months ago

Fixed