自己做一个SymbolSelector

1 Introduction      

      在AO下不用我说,大家都会调用ISymbolSelector,那么怎样在AE 下做一个SymbolSelector。在网上搜了一圈(包括Support.ESRI.com),并没有太多相关的解决方法,看来只有自力更生了。(某教练说:只要认真去做,中国人没有做不到的事情)

2 First Method

      可以采用ISymbol.SetupDC到PictureBox,将Symbol画到PictureBox就OK了,这个也是最常用的方法,估计也是ESRI想让开发者这么做的。(原因1.ESRI暴露了这方面的接口;原因2.ESRI提供了相关的例子)

      这种方法在VB6下应该是比较容易做的,如果你在VB6下开发推荐采用这种方法。但到了.NET反而不好实现了,.NET希望你通过System.Drawing.Graphics去画东西,另外.NET中的PictureBox控件并没有暴露hDC(纯属个人猜测,有待大家检验)

       另外这种方法有一个缺陷:就是如何让用户在PictureBox控件中选择Symbol,这个实现起来就困难了,需要你去判断Mouse的位置了。

3 Second Method

       第二种方法也是今天想拿出来与大家交流的方法:就是依旧选择在MapControl中画,也是说你在SymbolSelect对话框中使用MapControl代替PictureBox。这种方法不存在选择Symbol的问题,对于开发者来说在MapControl选择Symbol,应该是小菜了。另外在MapControl画Symbol也不需要我多说了。

        但是这种方法也有一个问题,等大家实现了,就可以发现其实画在MapControl上的效果不是很好,因为当你有滚动条时,上滚下滚都导致MapControl的刷新,但是刷新Symbol的效果让人十分郁闷。(目前至少我实现后的效果出现了刷新的问题,如果你有好方法请告知。)

下面就实现最关键的部分,其实代码是很简单,要提出的是这里使用的接口都是基于AE的,请放心。尤其要提起的是ServerStyleGallery对应的是以.ServerStyle为后缀名的Style文件(如ESRI.ServerStyle)

  Private Sub DrawSymbols()
    If CurSymbol Is Nothing Then Exit Sub
    Dim pGC As IGraphicsContainer = SymbolMap.Map
    Dim pStyleGlry As IStyleGallery<

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值