`
emowuyi
  • 浏览: 1479987 次
文章分类
社区版块
存档分类
最新评论

使用GDI+实现动态设置分级断点值

 
阅读更多

ArcMap的专题图制作中,我们对Classification并不陌生(如图)。这主要是对应于ClassBreak类型的地图渲染而言的。它可以用来动态设置分类的等级数目,而且可以使用鼠标对代表Break数值大小的蓝色线进行拖动,以调整分级值的大小,甚至可以显示某区间内样本值的分布状况。

<shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></path><lock v:ext="edit" aspectratio="t"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 414pt; HEIGHT: 291pt" type="#_x0000_t75"><imagedata src="file:///F:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image001.png" o:title="未命名"></imagedata></shape>

AO中没有提供现成的接口用来实现该工具。但可以使用三种方式,实现具有简单分类和动态调节值大小的工具。

第一种思路:修改用于绘图的开源控件,例如ZedGraph等,本来也想按照这个方法实现,但是有点懒的看别人的代码了:(

第二种思路:在MapControl上,添加LineElement,用LineElement代表制的大小,然后用IDisplayFeedback接口完成Element的移动,这样实现的难度最小,但是并不灵活,因为,假如开发工作并没有采用ArcGIS Engine的话,我们总不能为了做出这么个工具,就花上十多万的银子吧?

第三种思路:适用.NetGDI+直接在窗体上绘制出来。这样的实现方式最灵活,不受所采用的组件的影响。

关键代码:

效果:

<shape id="_x0000_i1026" style="WIDTH: 423pt; HEIGHT: 324pt" type="#_x0000_t75"><imagedata src="file:///F:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image003.png" o:title="未命名"></imagedata></shape>

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics