我正在尝试在我的 winform 中获取鼠标的坐标。
myMousePosition = myForm.PointToClient(Control.MousePosition)
这可行,但会产生垃圾(堆分配)。因为我经常调用这个方法,所以这是一个问题。
myMousePosition.X = Control.MousePosition.X - myForm.Location.X;
myMousePosition.Y = Control.MousePosition.Y - myForm.Location.Y;
这不起作用,因为还需要考虑标题栏。有什么建议么?
编辑:更多信息。VS2010 分析向导说,当我使用 PointToClient 方法时,会生成数千个绘图类型的实例。问题是,我没有在我的 Update 方法中创建一个新变量,那么这些实例来自哪里?
public sealed class InputManager
{
private System.Drawing.Point mPos;
public InputManager()
{
mPos = new System.Drawing.Point(0, 0);
}
//////////////////////////////////////////////////////////////////////////
public void Update()
{
mPos = myForm.PointToClient(Control.MousePosition);
}
}