您的位置:首页 > 其它

WorldWind学习系列三:简单功能分析——主窗体的键盘监听处理及拷贝和粘贴位置坐标功能

2009-12-12 11:37 525 查看
  在分析功能时发现,各功能都有自己的快捷键相应,比如今天要分析的 Copy Coordinates (Ctrl+C)和Paste Coordinates (Ctrl+P),以及主窗体的全屏功能也是通过快捷键(Alt+Enter)。这就使我需要彻底分析一下主窗体的键盘监听处理啦。

主窗体的键盘监听处理

WorldWind学习系列三:功能分析——截屏功能和“关于”窗体分析 中AboutDialog.cs分析类似,WorldWind主窗体也是重载了OnKeyUp,使窗体接受键盘响应。

936行
protected override void OnKeyUp(KeyEventArgs e)
{
if (this.webBrowserPanel.IsTyping()) //如果是在“网页窗体”(稍后介绍)里输入地址,则主窗体处不相应键盘事件,将 e.Handled = true;表示已经处理事件啦。
e.Handled = true;
else e.Handled = HandleKeyUp(e); //此处HandleKeyUp()是真正处理主窗口的键盘响应

base.OnKeyUp(e);
}

 HandleKeyUp函数 

转到特定的经纬度位置

WorldWindow类的 GotoLatLon()转到特定的位置
524
/// <summary>
/// Moves to specified location.
/// </summary>
/// <param name="latitude">Latitude in degrees of target position. (-90 - 90).</param>
/// <param name="longitude">Longitude in degrees of target position. (-180 - 180).</param>
/// <param name="heading">Camera heading in degrees (0-360) or double.NaN for no change.</param>
/// <param name="altitude">Camera altitude in meters or double.NaN for no change.</param>
/// <param name="perpendicularViewRange"></param>
/// <param name="tilt">Camera tilt in degrees (-90 - 90) or double.NaN for no change.</param>
public void GotoLatLon(double latitude, double longitude, double heading, double altitude, double perpendicularViewRange, double tilt)
{
if(!double.IsNaN(perpendicularViewRange))
altitude = m_World.EquatorialRadius * Math.Sin(MathEngine.DegreesToRadians(perpendicularViewRange * 0.5));
if (altitude<1)
altitude = 1;
this.drawArgs.WorldCamera.SetPosition(latitude, longitude, heading, altitude, tilt);
}

关键是:this.drawArgs.WorldCamera.SetPosition(latitude, longitude, heading, altitude, tilt)其中调用了Camera.cs中的SetPosition函数,其中主要代码
Point3d p = Quaternion4d.QuaternionToEuler(m_Orientation);

_latitude.Radians = p.Y;
_longitude.Radians = p.X;
_heading.Radians = p.Z;
此中用到Quaternion4d和Point3d类。

希望网友能有所收获,其他部分:

WorldWind学习系列三:功能分析——截屏功能和“关于”窗体分析

WorldWind学习系列二:擒贼先擒王篇2

WorldWind学习系列二:擒贼先擒王篇1

WorldWind学习系列一:顺利起航篇
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐