.net 使用手写笔在InkCanvas控件上墨迹时,墨迹笔划不显示50%的时间
我正在努力实现的目标 我希望允许用户在控件(标签、下拉列表、文本框等)的顶部使用墨水,将墨水笔划转换为文本,然后将文本输入控件。当使用鼠标/手写笔单击InkCanvas控件时,可通过将该控件置于前台来捕获墨水。提起鼠标/触笔时,InkCanvas将返回到背景 问题 当使用鼠标时,这始终按预期工作。使用手写笔时,墨水笔划有时不会显示在InkCanvas上,直到提起手写笔。它在大约50%的时间内工作正常 项目 我创建了一个简单的WPF项目,其中包含一个带有InkCanvas控件和标签的窗口。单击标签时,InkCanvas将出现在前台并开始接受墨水输入。鼠标向上移动时,InkCanvas返回到背景 XAML.net 使用手写笔在InkCanvas控件上墨迹时,墨迹笔划不显示50%的时间,.net,wpf,.net,Wpf,我正在努力实现的目标 我希望允许用户在控件(标签、下拉列表、文本框等)的顶部使用墨水,将墨水笔划转换为文本,然后将文本输入控件。当使用鼠标/手写笔单击InkCanvas控件时,可通过将该控件置于前台来捕获墨水。提起鼠标/触笔时,InkCanvas将返回到背景 问题 当使用鼠标时,这始终按预期工作。使用手写笔时,墨水笔划有时不会显示在InkCanvas上,直到提起手写笔。它在大约50%的时间内工作正常 项目 我创建了一个简单的WPF项目,其中包含一个带有InkCanvas控件和标签的窗口。单击标签
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="409" Width="824" WindowStartupLocation="CenterScreen">
<Grid>
<InkCanvas IsHitTestVisible="False" Panel.ZIndex="0" Background="Aqua" Name="InkContainer" />
<Label Content="INK ON ME" Height="60" HorizontalAlignment="Left" Margin="424,146,0,0" Name="Label1" VerticalAlignment="Top" Width="254" FontSize="36" Foreground="White" FontWeight="Bold" />
</Grid>
如果您有任何问题和/或需要其他信息,请告诉我。解决方法是将触控笔关闭事件标记为已处理,这样它就不会冒泡并触发其他触控笔/鼠标事件。以下是更新后的代码:
Class MainWindow
Private Sub Label1_PreviewMouseDown(sender As System.Object, e As System.Windows.Input.MouseButtonEventArgs) Handles Label1.PreviewMouseDown
InkContainer.Strokes.Clear()
Canvas.SetZIndex(InkContainer, 100)
InkContainer.IsHitTestVisible = True
InkContainer.CaptureStylus()
End Sub
Private Sub Label1_PreviewStylusDown(sender As System.Object, e As System.Windows.Input.StylusDownEventArgs) Handles Label1.PreviewStylusDown
InkContainer.Strokes.Clear()
Canvas.SetZIndex(InkContainer, 100)
InkContainer.IsHitTestVisible = True
InkContainer.CaptureStylus()
e.Handled = True
End Sub
Private Sub InkContainer_PreviewMouseUp(sender As System.Object, e As System.Windows.Input.MouseButtonEventArgs) Handles InkContainer.PreviewMouseUp
Canvas.SetZIndex(InkContainer, -1)
InkContainer.IsHitTestVisible = False
End Sub
End Class
Class MainWindow
Private Sub Label1_PreviewMouseDown(sender As System.Object, e As System.Windows.Input.MouseButtonEventArgs) Handles Label1.PreviewMouseDown
InkContainer.Strokes.Clear()
Canvas.SetZIndex(InkContainer, 100)
InkContainer.IsHitTestVisible = True
InkContainer.CaptureStylus()
End Sub
Private Sub Label1_PreviewStylusDown(sender As System.Object, e As System.Windows.Input.StylusDownEventArgs) Handles Label1.PreviewStylusDown
InkContainer.Strokes.Clear()
Canvas.SetZIndex(InkContainer, 100)
InkContainer.IsHitTestVisible = True
InkContainer.CaptureStylus()
e.Handled = True
End Sub
Private Sub InkContainer_PreviewMouseUp(sender As System.Object, e As System.Windows.Input.MouseButtonEventArgs) Handles InkContainer.PreviewMouseUp
Canvas.SetZIndex(InkContainer, -1)
InkContainer.IsHitTestVisible = False
End Sub
End Class