在.NET平台使用Google|在.NET平台使用Google Earth COM API示例(01)

本系列参考了Neil's Blog,相关代码有做小幅修改。
首先请确保目标机器上已经安装GoogleEarth(以下简称GE),本机安装GE7.1




接下来新建C#项目(WinForm,.NET2.0,x86),具体设置如下图
在.NET平台使用Google|在.NET平台使用Google Earth COM API示例(01)
文章图片




然后添加COM引用(项目引用-->右键-->添加引用-->浏览-->COM-->类型库):
在.NET平台使用Google|在.NET平台使用Google Earth COM API示例(01)
文章图片




事实上也可以将EARTHLib.dll拷贝过来,然后添加引用,效果一样,如下图:
在.NET平台使用Google|在.NET平台使用Google Earth COM API示例(01)
文章图片




然后在主窗体添加一个PictureBox控件和3个Button,分别为:
button1:启动
button2:截图
button3:退出
然后完善代码响应3个按钮的Click事件
完整代码如下

using System; using System.Drawing; using System.Windows.Forms; using System.Runtime.InteropServices; using EARTHLib; using System.IO; using System.Diagnostics; namespace GEDemo1 { public partial class GEDemo1 : Form { private bool isGEStarted = false; private ApplicationGE GEApp; private string ssFile; public GEDemo1() { InitializeComponent(); }private void StartGE() { if (isGEStarted) { return; }try { //启动GE GEApp = (ApplicationGEClass)Marshal.GetActiveObject("GoogleEarth.Application"); isGEStarted = true; } catch { GEApp = new ApplicationGEClass(); isGEStarted = true; } }private void button1_Click(object sender, EventArgs e) { StartGE(); }private void button2_Click(object sender, EventArgs e) { ssFile = Path.Combine(Application.StartupPath, System.DateTime.Now.ToString("GES_yyyyMMddHHmmss")+".jpg"); try { //quality的取值范围在(0,100)之间,质量越高,quality越大 GEApp.SaveScreenShot(ssFile, 100); //载入刚才的图像 pictureBox1.Image = Bitmap.FromFile(ssFile); } catch (Exception ex) { MessageBox.Show("保存截屏图像时发生错误:" + ex.ToString()); } }private void button3_Click(object sender, EventArgs e) { //首先杀掉GoogleEarth进程 Process[] geProcess = Process.GetProcessesByName("GoogleEarth"); foreach (var p in geProcess) { p.Kill(); }//然后关闭窗口,退出程序 this.Close(); Application.Exit(); }} }


注意这样只能截取黑白的图像,运行结果如下
在.NET平台使用Google|在.NET平台使用Google Earth COM API示例(01)
文章图片




本系列后续文章将会关注一些高级内容,敬请期待!
点此领取楼主
【在.NET平台使用Google|在.NET平台使用Google Earth COM API示例(01)】转载于:https://www.cnblogs.com/fengyhack/p/10603719.html

    推荐阅读