在.NET平台使用Google|在.NET平台使用Google Earth COM API示例(01)
本系列参考了Neil's Blog,相关代码有做小幅修改。
首先请确保目标机器上已经安装GoogleEarth(以下简称GE),本机安装GE7.1
接下来新建C#项目(WinForm,.NET2.0,x86),具体设置如下图
文章图片
然后添加COM引用(项目引用-->右键-->添加引用-->浏览-->COM-->类型库):
文章图片
事实上也可以将EARTHLib.dll拷贝过来,然后添加引用,效果一样,如下图:
文章图片
然后在主窗体添加一个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)】转载于:https://www.cnblogs.com/fengyhack/p/10603719.html