Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 使用手写笔在InkCanvas控件上墨迹时,墨迹笔划不显示50%的时间_.net_Wpf - Fatal编程技术网

.net 使用手写笔在InkCanvas控件上墨迹时,墨迹笔划不显示50%的时间

.net 使用手写笔在InkCanvas控件上墨迹时,墨迹笔划不显示50%的时间,.net,wpf,.net,Wpf,我正在努力实现的目标 我希望允许用户在控件(标签、下拉列表、文本框等)的顶部使用墨水,将墨水笔划转换为文本,然后将文本输入控件。当使用鼠标/手写笔单击InkCanvas控件时,可通过将该控件置于前台来捕获墨水。提起鼠标/触笔时,InkCanvas将返回到背景 问题 当使用鼠标时,这始终按预期工作。使用手写笔时,墨水笔划有时不会显示在InkCanvas上,直到提起手写笔。它在大约50%的时间内工作正常 项目 我创建了一个简单的WPF项目,其中包含一个带有InkCanvas控件和标签的窗口。单击标签

我正在努力实现的目标

我希望允许用户在控件(标签、下拉列表、文本框等)的顶部使用墨水,将墨水笔划转换为文本,然后将文本输入控件。当使用鼠标/手写笔单击InkCanvas控件时,可通过将该控件置于前台来捕获墨水。提起鼠标/触笔时,InkCanvas将返回到背景

问题

当使用鼠标时,这始终按预期工作。使用手写笔时,墨水笔划有时不会显示在InkCanvas上,直到提起手写笔。它在大约50%的时间内工作正常

项目

我创建了一个简单的WPF项目,其中包含一个带有InkCanvas控件和标签的窗口。单击标签时,InkCanvas将出现在前台并开始接受墨水输入。鼠标向上移动时,InkCanvas返回到背景

XAML

<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