正值第三次全国土地调查之际,这次我们又来学习一下idata关于到屏幕上拾取一个点的小案例,首先是判断当前是否有激活文档,即可用的数据库。尔后使用引用类型,将声明的变量点传入到提供接口中,鼠标拾取屏幕上的点。最后根据ErrorType类型来判断拾取的状态,如果是取消,则提示当前已经取消了拾取点操作。其中ErrorType各种枚举类型如下表所示。
类型 | 对应值及其说明 |
eOk | 0,返回正确 |
eError | 1,返回错误 |
eCancel | 2,返回取消 |
eNone | 3,返回空 |
eKWord | 4,返回关键字 |
eReadOpenFailed | 5,返回读错 |
eWriteOpenFailedeWriteOpenFailed | 6,返回写错误 |
eLocked | 7,返回锁定 |
eNoLock | 8,返回无锁定 |
最后根据点的属性X、Y、Z坐标值,在WinForm的提示框中显示出来。整个流程就算结束了。这个例子非常简单,权当对idata的了解。下面是工程的源代码。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Southgis.iData;
using System.Windows.Forms;
namespace GetPoint
{
public class Class1
{
private iDataInterface iData = new iDataInterface();
private void TestGetPt() {
if (this.iData.isDocumentActived())
{
MessageBox.Show("无可用的数据,无法选择点。", "信息",
MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
return;
}
Point point;
ErrorType et = this.iData.iDataGetPoint(null,"屏幕上拾取一个点",out point);
if (et==ErrorType.eCancel)
{
MessageBox.Show("取消了选择。", "信息", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
return;
}
if (et == ErrorType.eOk)
{
string msg = "你选择了点:";
msg = msg + "\nX : " + point.X;
msg = msg + "\nY : " + point.Y;
msg = msg + "\nZ : " + point.Z;
MessageBox.Show(msg, "信息", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
return;
}
MessageBox.Show("发生了错误。", "错误", MessageBoxButtons.OK, MessageBoxIcon.Hand);
}
}
}
更多内容,微信扫二维码关注公众号