使用wacom图形设备时,WPF c# mouseevents不工作/或非常慢

2ekbmq32  于 2023-01-02  发布在  C#
关注(0)|答案(1)|浏览(191)

我想用我的wacom绘图板在画布上画点东西。我写了一些代码,我可以用鼠标画得很好。但是,用wacom绘图板,它只是有时工作,而且速度较慢。问题是OnMouseDown事件,它只是在相当长的时间延迟后才被检测到。
下面是我的代码:

public partial class MainWindow : Window
{
    private Polyline myPolyline;
    private Boolean isMouseDown;
    public MainWindow()
    {
        InitializeComponent();
    }

    private void OnMouseDown(object sender, MouseButtonEventArgs e)
    {
    
        isMouseDown = true;
        Point p = e.GetPosition(mycanvas);
        myPolyline = new Polyline();
        myPolyline.Stroke = System.Windows.Media.Brushes.SlateGray;
        myPolyline.StrokeThickness = 2;
        myPolyline.FillRule = FillRule.EvenOdd;
        PointCollection myPointCollection = new PointCollection();
        myPointCollection.Add(p);
        myPolyline.Points = myPointCollection;
        mycanvas.Children.Add(myPolyline);
    
    }

    private void OnMouseUp(object sender, MouseButtonEventArgs e)
    {
    
        isMouseDown = false;
     
    }

    private void OnMouseMove(object sender, MouseEventArgs e)
    {
    
        Point p = e.GetPosition(mycanvas);
        
        if (!isMouseDown)
        {
            return;
        }
       

        myPolyline.Points.Add(p);
      
    }

}

下面是xaml

<Window x:Class="WpfApp1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:WpfApp1"
    mc:Ignorable="d"
    Title="MainWindow" Height="450" Width="800">
<StackPanel>
   
    <Canvas Background="Azure" x:Name="mycanvas" Width="800" Height="450" MouseDown="OnMouseDown" MouseUp="OnMouseUp" MouseMove="OnMouseMove" ></Canvas>

   
</StackPanel>
xmd2e60i

xmd2e60i1#

您的代码正在使用MouseButtonEventArgs和MouseEventArgs,而不是Wacom特定的事件参数类型。
您可以尝试用Wacom提供的API替换现有的鼠标事件处理程序。
Wacom在多个平台上提供专用API,允许您直接访问Wacom数位板。
例如,在Windows上,您可以使用Wacom提供的Ink API访问Wacom图形输入板。
此API提供与Wacom绘图板相关的所有事件和数据。使用Ink API可以帮助您更快地响应Wacom绘图板事件,并使用更精确的数据来控制画笔。
也许你可以参考这个link

相关问题