物探论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 563|回复: 0

C#开发GIS应用简明教程[四]

[复制链接]
发表于 2013-3-15 18:07:16 | 显示全部楼层 |阅读模式
6)缩放图层:
所谓的缩放图层,并不是指将单个图层缩放.而是指定图层的可见范围比例,例如,设置一个图层在缩小显示大于5英里的时候隐藏.小于5英里的时候显示.和其它编程语言一样,只要设置Layer的ZoomMin和ZoomMax就可以了.

7)显示整个图层:
这里要提及的一个技巧是在C#下面怎样显示整个图层.众所周知,在VB下面只要:
Map1.Bounds = Map1.Layers("USA").Bounds
一句程序就可以轻松实现.但是要是在C#中这样写的话,百分百会出错.其实,这里有一个小小的技巧,聪明的你一定能看出来:
axMap1.CtlBounds=axMap1.Layers._Item("USA").Bounds;

8)在图层上绘制永久图形:
我们在介绍工具的时候,有一些工具没有介绍,这些工具其实是用来在图层上创建永久图形对象的(图元).当在图层上绘制了图形以后,这些图形将以数据记录的形式保存在图层表中,也就是创建了一个图元.如果不想保存图元,可以在临时图层里绘制.
axMap1.Layers._Item("USA Temp Layer").Editable=true;
axMap1.Layers.InsertionLayer=axMap1.Layers._Item("USA Temp Layer");
axMap1.CurrentTool=MapXLib.ToolConstants.miAddLineTool;
上面的程序使用了画线的工具,在地图上拖动鼠标就可以在临时图层上画线了.这些工具使用的前提是必须指定axMap1的插入图层(InsertionLayer).才能在图层表中插入数据.

关于图层的关键技术就介绍到这里,掌握了这些技术以后,在作进一步的研究时,例如动画图层和绘制图层的开发,遇到的困难应该不大.


下面我们介绍C#对MAPX图元的编程技术.

9)在图层上创建图元:
根据MAP Info提供的MapX 5.0开发手册,创建图元有两种方法,用两段代码说明这两种代码在C#的实现方法:
第一种实现方法:直接使用Feature类创建图元
MapXLib.Style sty=new MapXLib.StyleClass();
MapXLib.Feature ftr=new MapXLib.FeatureClass();
ftr.Attach(axMap1.GetOcx());
ftr.Type=MapXLib.FeatureTypeConstants.miFeatureTypeText;
sty.TextFontColor=255;
sty.TextFont.Size=12;
ftr.Style=sty;
ftr.Caption="New Feature";
ftr.Point.Set(axMap1.CenterX,axMap1.CenterY);
axMap1.Layers._Item("US Top 20 Cities").Style=sty;
ftr=axMap1.Layers._Item("US Top 20 Cities").AddFeature(ftr,new MapXLib.RowValuesClass());
ftr.Update(ftr,new MapXLib.RowValuesClass());

有几个要注意的地方:
ftr.Attach(axMap1.GetOcx());
如果在VB6下,这句程序应该是这样的:
ftr.Attach Map1
从这里可以看到在C#中因为严格的类型管理所带来的一些变化.如果不进行GetOcx()的转换,即使在VB.Net下也是错误的.

ftr=axMap1.Layers._Item("US Top 20 Cities").AddFeature(ftr,new MapXLib.RowValuesClass());
我们在这个程序中加入了一行空的数据,这也就代表着我们加入的图元不包含任何数据信息.这是为了在介绍图元的时候方便大家掌握,并不意味着这样增加图元就不能将数据保存进去,实际上,通过设置一个新的RowValues变量,是可以将数据信息保存到图元中的.我们将在后面的章节中介绍如何将数据保存在图元中.

ftr.Update(ftr,new MapXLib.RowValuesClass());
这句程序的作用是将创建的图元保存到图层表中,这种保存是永久保存的.除非是在临时图层上增加的图元,否则下次打开地图文件的时候,将看到创建的图元仍然保留在地图上.因此,在对图元操作之前请备份好地图文件,避免不必要的损失.

另外,关于图元的类型(Type)和风格(Style),应该和其所在的图层相对应,比如上面程序中关于Type和Style的设置,都是和"US Top 20 Cities" 图层的类型对应的.有关类型和风格的设置,请查阅相关手册.

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|物探论坛 ( 鄂ICP备12002012号 微信号:iwutan )

GMT+8, 2024-5-10 05:02 , Processed in 0.060399 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表