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 来从新恢复初始的符号信息并进行预览。

  • 相关阅读:
    小G的城堡
    最大公约数与扩展欧几里得算法
    阶乘的逆元
    素数的判断
    快速幂
    重载高精度运算符
    Hello World!
    【JavaScript】7-13 日K蜡烛图 (15分)
    【JavaScript】7-12 两个数的简单计算器 (10分)
    【JavaScript】7-11 分段计算居民水费 (10分)
  • 原文地址:https://www.cnblogs.com/lauer0246/p/1100967.html
Copyright © 2011-2022 走看看