当前版本增加了一项关键功能:设置拍摄相机参数(SetCameraParams)
这里的“拍摄相机”就像是“观察点”,程序执行效果如下图
1.参数设置,点击【应用】按钮将自动跳转到第一个标签页
2.目标位置
核心代码如下
using System;
using System.Windows.Forms;
using System.ComponentModel;
using EARTHLib;
using System.Drawing;
using System.Drawing.Imaging;
using System.Diagnostics;
namespace GEDemo5
{
public struct SCamParams
{
public double dLat;
public double dLon;
public double dAlt;
public double dRng;
public double dAng;
public double dAzm;
public double dSpd;
}
public partial class GEDemo5 : Form
{
#region PrivateMembers
private IntPtr GEHMainWnd = (IntPtr)0;
private IntPtr GEHRenderWnd = (IntPtr)0;
private ApplicationGE GEApp = null;
private bool isGEStarted = false;
SCamParams scp = new SCamParams();
#endregion PrivateMembers
public GEDemo5()
{
InitializeComponent();
WindowState = FormWindowState.Maximized; //最大化显示
tabDocker.TabPages.Clear();
tabDocker.TabPages.Add(tabGEViewer);
SetBackgroundImage(tabGEViewer);
SetParamsDefault();
}
#region GEFunctions
/// <summary>
/// 功能:尝试启动Google Earth实例
/// </summary>
/// <param>
/// 参数:parentDocker
/// 含义:GE渲染窗口所停靠的父窗口
/// </param>
private void TryStartGE(Control parentDocker)
{
try
{
//创建GE新实例
GEApp = new ApplicationGE();
//取得GE主窗口句柄
GEHMainWnd = (IntPtr)GEApp.GetMainHwnd();
//隐藏GoogleEarth主窗口
NativeMethods.SetWindowPos(GEHMainWnd,
NativeMethods.HWND_BOTTOM,
0, 0, 0, 0,
NativeMethods.SWP_NOSIZE | NativeMethods.SWP_HIDEWINDOW);
//取得GE的影像窗口(渲染窗口)句柄
GEHRenderWnd = (IntPtr)GEApp.GetRenderHwnd();
//调整视图窗口尺寸
ResizeTabPage(tabGEViewer);
//启动成功,设置标记
isGEStarted = true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error Starting GE");
}
}
/// <summary>
/// 功能:尝试关闭GE
/// </summary>
private void TryCloseGE()
{
try
{
//杀掉GoogleEarth进程
Process[] geProcess = Process.GetProcessesByName("GoogleEarth");
foreach (var p in geProces