private void axMapControl1_OnMouseMove(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseMoveEvent e)
{
//当前比例尺
barStaticItem1.Caption = " 1:" + ((long)axMapControl1.MapScale).ToString() + " ";
IProjectedCoordinateSystem pcs = this.axMapControl1.SpatialReference as IProjectedCoordinateSystem;
//定义点
WKSPoint pt = new WKSPoint(); //不能用IPoint pt = new PointClass();因为后面的方法只支持WKSPoint
pt.X = e.mapX;
pt.Y = e.mapY;
double d1, n1, m1, L1, d2, n2, m2, L2;
pcs.Inverse(1, ref pt); //将平面坐标转换为地理坐标
d1 = pt.X / 1;//度的整数部分
n1 = pt.X % 1;//度的小数部分
m1 = (n1 * 60) / 1;//分
L1 = ((n1 * 60) % 1) * 60;//秒
d2 = pt.Y / 1;//纬度的整数部分
n2 = pt.Y % 1;//度的小数部分
m2 = (n2 * 60) / 1;//分
string m22;
if (m2 < 10)
m22 = "0" + m2.ToString();
else
m22 = m2.ToString();
L2 = ((n2 * 60) % 1) * 60;//秒
try
{
barEditItem_X.EditValue = d1.ToString().Remove(3) + "°" + m1.ToString().Remove(2) + " '" + L1.ToString().Remove(6) + "\"" + "E ";
barEditItem_Y.EditValue = d2.ToString().Remove(2) + "°" + m22.Remove(2) + " '" + L2.ToString().Remove(6) + "\"" + "N ";
}
catch (Exception)
{
barEditItem_X.EditValue = "0";
barEditItem_Y.EditValue = "0";
}
}
首先给mapcontrol添加鼠标移动的事件,写上面代码,可以显示XY坐标和比例尺。效果如下图: