我正在尝试解决代码问题,使鼠标移动和线条绘制之间的响应时间达到即时。每次我都会发现两者之间存在延迟。我已经在Windows窗体中编写了代码,现在我正在使用WPF进行编码。
问题明显出现在代码中,而不是我的电脑。
基本上它的工作原理如下。单击任意位置并创建Point1。移动鼠标并更新Point2,然后从Point1到Point2绘制一条线,该线在鼠标移动时更改。
下面是我的极其简单的代码。 它可能看起来很快,但如果你将窗口最大化,让线变长并快速移动鼠标,你就可以更容易地注意到它的延迟。
此外,未来还将有一个图像层位于此之下,这肯定会导致更多的延迟,但现在我只想优化这个问题。
当我使用5年前的其他类似程序时,线条移动实际上是即时的。这就是为什么我对使用较新的编码时出现延迟感到困惑的原因。
问题明显出现在代码中,而不是我的电脑。
基本上它的工作原理如下。单击任意位置并创建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;
}