BaseTool中鼠标双击事件获取鼠标位置的方法

  ArcGISEngine的BaseTool类中提供了鼠标双击、鼠标移动、鼠标按键按下、鼠标按键弹起四种鼠标事件,但是鼠标双击事件的参数跟其他三种不一样,双击事件中没有提供鼠标位置信息。

  public virtual void OnDblClick();

  public virtual void OnMouseDown(int Button, int Shift, int X, int Y);

  public virtual void OnMouseMove(int Button, int Shift, int X, int Y);

  public virtual void OnMouseUp(int Button, int Shift, int X, int Y);

  今天在重载双击事件的时候,为了获取鼠标双击在制图页面的位置,找了好多的资料,最后想到了一种解决办法。

  1、先获取鼠标在屏幕中的位置,Control.MousePosition

  2、将绝对的屏幕坐标转换为相对于PageLayoutControl的屏幕坐标,AxPageLayoutControl.PointToClient(Control.MousePosition),注意,只有AxPageLayoutControl有这个函数,PageLayoutControl没有转换函数。这一步已经就可以用了,但是如果想获得鼠标在PageLayoutControl的页面坐标,还需要第三步。

  3、将屏幕坐标转换为制图页面坐标,PageLayoutControl.ToPagePoint(pt.X, pt.Y)

原文地址:https://www.cnblogs.com/SpaceOfTime/p/4203844.html