winform でマウスの座標を取得しようとしています。
myMousePosition = myForm.PointToClient(Control.MousePosition)
これは機能しますが、ガベージ (ヒープ割り当て) が生成されます。私はこのメソッドを頻繁に呼び出すので、それは問題です。
myMousePosition.X = Control.MousePosition.X - myForm.Location.X;
myMousePosition.Y = Control.MousePosition.Y - myForm.Location.Y;
考慮すべきタイトルバーもあるため、これは機能しません。助言がありますか?
編集:もう少し情報。VS2010 プロファイリング ウィザードによると、PointToClient メソッドを使用すると、drawing.point タイプのインスタンスが何千も生成されます。問題は、私は 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);
}
}