You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

WPF中Wacom数位板鼠标事件响应延迟/失效的绘图问题求助

WPF中Wacom数位板鼠标事件响应延迟/失效的绘图问题求助

我想用Wacom数位板在WPF画布上绘图,目前写了一段代码,用鼠标绘图的时候完全正常,流畅得很,但换成数位板的话,不仅有时候会失效,响应速度还特别慢——核心问题就是OnMouseDown事件要等好一会儿才能被检测到,导致下笔的时候半天没反应,太影响体验了。

下面是我的C#代码:

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>
</Window>

备注:内容来源于stack exchange,提问作者flori10

火山引擎 最新活动