zoukankan      html  css  js  c++  java
  • ArcEngine(AE)符号选择器及符号恢复功能【转载】

    ArcEngine(AE)符号选择器及符号恢复功能【转载】
                                                                          http://rsgisman.bokee.com/viewdiary.24217873.html

            AE 开发中进行地图简单符号渲染的一个必要手段。AE自带了SymbologyControl控件用于进行符号类型文件的加载和显示,并通过StyleGalleryItem来返回选择的内容。这也让设计一个自定义符号选择器变得非常简单。

          简单的符号绘制是通过设置图层的SimpleRenderer属性来得到的。在借鉴一些例程之后,我也设计了这样一个符号选择功能,只需通过简单的调用一个函数得到返回的SimpleRenderer赋值给图层即可:

          Dim pSimpleRenderer As ISimpleRenderer
          Set pSimpleRenderer = frmSymbolSelector.GetSimpleRenderer(pCurrentLayer)

          此处的frmSymbolSelector就是一个自定义的符号选择器,调用该选择器时只需要通过定义的借口函数GetSimpleRenderer就能调出符号选择器供选择相应图层类型的符号,如图所示:

        在设计开发完之后首先发现有个问题,就是“取消”功能之后,如果在“取消”前已经选择了新符号或者修改了原有符号并进行了符号的预览,那么图层的符号也会 改变。因为函数GetSimpleRenderer是通过传递图层变量来获取初始符号信息的,在符号选择器中修改的符号是和图层的符号关联在一起的。为了 避免此项错误,就必须在最初始获取原始符号信息时将其另外保留一份,在“取消”时再将该原始符号从新赋值给图层。这里就有一个问题,直接通过符号赋值的方 法行不通,因此使用了IClone对象来进行拷贝原始符号信息:

         Private pOriginalSymbol As ISymbol   

         Dim pCloneFatherSymbol As IClone
         Set pCloneFatherSymbol = pSimpleRenderer.Symbol
         Set pOriginalSymbol = pCloneFatherSymbol.Clone

         这样如果我们在“取消”时将pOriginalSymbol从新拷贝会图层符号即可,

         而符号“恢复”也正是采取该方式来实现,通过pOriginalSymbol 来从新恢复初始的符号信息并进行预览。

  • 相关阅读:
    ADO.Net对Oracle数据库的操作(转)
    代码反思(1)
    继承与多态
    存储过程
    linux学习流程及内容概括
    Linux下终端快捷键
    查找算法
    epoll解读
    TCP/udp编程
    如何学习嵌入式
  • 原文地址:https://www.cnblogs.com/lauer0246/p/1100967.html
Copyright © 2011-2022 走看看