线条画即时响应鼠标移动?

我试图弄清楚如何编写代码,以便鼠标移动和线条绘制之间的响应时间是即时的。 每次我这样做总是滞后2.我已经在windows窗体中编码了这个,现在我在WPF编码。

问题肯定在于代码,而不是我的电脑。

Basicaly它的工作原理如下。 单击任意位置并创建point1。 移动鼠标并更新point2并从Point1到Point2绘制一条线,该线在鼠标移动时发生变化。

下面是我执行此操作的极其简单的代码。它可能看起来很快但是如果你最大化窗口并使线条变长并快速移动鼠标,你可以更容易地注意到它。

此外,未来将会有一个图像层,这肯定会导致它更加滞后..但是现在我只想优化它。

当我使用5年多以前的其他类似程序时,线条运动实际上是即时的。 这就是为什么我很困惑为什么这个新的编码,它的滞后…

Point mLoc; Line myLine = new Line(); public MainWindow() { InitializeComponent(); SnapsToDevicePixels = false; myLine.Stroke = System.Windows.Media.Brushes.White; myLine.StrokeThickness = 1; canvas1.Children.Add(myLine); } private void onMMove(object sender, MouseEventArgs e) { mLoc = Mouse.GetPosition(canvas1); myLine.X2 = mLoc.X; myLine.Y2 = mLoc.Y; } private void onMLClick(object sender, MouseButtonEventArgs e) { mLoc = Mouse.GetPosition(canvas1); myLine.X1 = mLoc.X; myLine.Y1 = mLoc.Y; } 

WinAPI不会足够快地发送WM_MOUSEMOVE以检测鼠标的每个移动。 有一篇非常好的文章展示了如何非常精确地检测鼠标移动( http://blogs.msdn.com/b/oldnewthing/archive/2012/03/14/10282406.aspx