我正在研究WPF中的程序,需要在她的一个屏幕上绘制50条多线,描述一些能量在太空中的运动。该程序的另一个要求是移动两条线和一个点以指示鼠标位置的相关性。
问题在于,当多边形线覆盖了画布的高百分比并且鼠标飞过画布时,所有都开始运行得非常慢。 我成功地改善了这一点,但仍然不够好,所以我请求你的帮助。
因为这个画布与另一个画布相关,所以我将两个作品分成两个 - 处理程序和移动函数:
private void rayTraceCanvas_MouseMove(object sender, MouseEventArgs e)
{
System.Windows.Point pos = e.GetPosition(rayTraceCanvas);
mouseMove(pos);
if (m_MouseMoveCallback != null)
m_MouseMoveCallback(m_CurrentDepth);
}
然后是运动功能:
private void mouseMove(Point currentPos)
{
m_CurrentDepth = Math.Round((currentPos.Y) / (m_PixelPerDepthUnit));
m_CurrentRange = Math.Round((currentPos.X) / (m_PixelPerRangeUnit));
DepthPos.Text = "D: " + m_CurrentDepth.ToString();
RangePos.Text = "R: " + m_CurrentRange.ToString();
rayTraceWidthLine.Y1 = currentPos.Y;
rayTraceWidthLine.Y2 = currentPos.Y;
rayTraceHeightLine.X1 = currentPos.X;
rayTraceHeightLine.X2 = currentPos.X;
Canvas.SetLeft(rayTraceDotOnGraph, currentPos.X - (rayTraceDotOnGraph.Width / 2));
Canvas.SetTop(rayTraceDotOnGraph, currentPos.Y - (rayTraceDotOnGraph.Height / 2));
}
我试过这个没有处理程序函数的删除和它的工作相同所以问题不存在。