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




