ArcEngine-Java中符号选择器(SymbolSelector)的使用

ArcEngine-java的API提供了TxSymbolSelector类,可以弹出一个界面供用户进行各种符号特征的选择,以及对符号的属性进行设置。
其API文档中对该函数提供的接口说明如下:

 
 
Method Summary
  booleanaddSymbol(ISymbol symbol)            Brings up a dialog for Adding a symbol.
 ISymbolgetSymbolAt(int index)            Gets the symbol at the given index.
 booleanselectSymbol(int hWnd) 
不得不吐槽,arcengine提供的java api写的是非常非常的简略,很多函数的介绍简略到根本得不到有用的信息,只能靠名字进行猜测和不停的尝试。
在arcengine中,主要有点、线、面三种要素,相应的也就有三种用于描述该要素的特征,IMakerSymbol、ILineSymbol、IFillSymbol。
TxSymbolSelector每一次弹出只会列出其中一种类型的所有符号。默认列出的是MarkerSymbol。 但是,可以通过addSymbol(*) 函数来设置页面中列出的符号类型,例如add一个随意设置的IFillSymbol类型,界面列出的符号就是面要素的符号类型。 (在TxsymbolSelector实例化的时候,可以add多种类型要素的符号,但只有最后一个add有用。)
同时,TxSymbolSelector弹出的界面中会保持所add的symbol的属性为默认属性。
switch ( element.getGeometry().getGeometryType() ) {
			case esriGeometryType.esriGeometryPoint:
				if (element instanceof MarkerElement ) {
					MarkerElement markerElement = (MarkerElement)element;
					symbolSelector.addSymbol((ISymbol)markerElement.getSymbol());
					if (symbolSelector.selectSymbol(mapBean.getHWnd())) {
						markerElement.setSymbol((IMarkerSymbol)symbolSelector.getSymbolAt(0));
					}	
				}
				break;
			case esriGeometryType.esriGeometryPolyline:
				LineElement lineElement = (LineElement)element;
				symbolSelector.addSymbol((ISymbol)lineElement.getSymbol());
				if (symbolSelector.selectSymbol(mapBean.getHWnd())) {
					lineElement.setSymbol((ILineSymbol)symbolSelector.getSymbolAt(0));
				}
				break;
			case esriGeometryType.esriGeometryPolygon:
				IFillShapeElement fill = (IFillShapeElement)element;
				symbolSelector.addSymbol((ISymbol)fill.getSymbol());
				if (symbolSelector.selectSymbol(mapBean.getHWnd())) {
					fill.setSymbol((IFillSymbol)symbolSelector.getSymbolAt(0));
				}
				break;
			default:
				break;
			}
<span style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; font-size: 13px; line-height: 1.42857143;">该段程序段实现了对任意的元素(element)进行符号的修改,而且通过add()传递进来的元素符号,可以实现保留原元素的原始属性,而只对需要修改的属性进行修改,其它属性保持不变。</span>
<span style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; font-size: 13px; line-height: 1.42857143;"></span><pre style="margin-top: 0px; margin-bottom: 10px; font-size: 13px; overflow: auto; font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 9.5px; line-height: 1.42857143; color: rgb(51, 51, 51); word-break: break-all; word-wrap: break-word; border: 1px solid rgb(204, 204, 204); background-color: rgb(245, 245, 245);"><pre code_snippet_id="538838" snippet_file_name="blog_20141201_3_9540282" name="code" class="java">在arcengine中还有一种特殊的元素就是TextElement,该元素的符号也可以通过以上方法进行修改,但是其提供的属性设置选项非常有限,不能满足需求,所以对于textElement,自己code一个symbolSelector比较好。 
</pre><pre code_snippet_id="538838" snippet_file_name="blog_20141201_3_9540282" name="code" class="java">最后,如果想要自己定义symbolselector中的样式,可以在ArcMap中的样式编辑器中自己制作样式集,是style文件形式存在,然后利用arcEngine自带的makeServeStyleSet.exe程序将style文件转化为serverstyle文件,可供arcEngine程序进行调用。在arcMap10.1中,exe程序在\Desktop\bin\目录下。
 

                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值