欢迎您来到GIS动力

加入收藏 免费注册 用户登陆 帮助中心
首页 新闻动态 技术专栏 银杏树下 学习考研 软件下载 求职招聘 许愿瓶 节日祝福 用户中心 精彩推荐 资源搜索 地图
专栏导航: AO开发 | SO开发 | ArcGIS桌面 | 超图桌面 | 开发语言 | 数据库 | WebGIS | 银杏文学 | 研究生考题 | FreeMap FreeTalk
   您现在位于: 首页技术专栏ArcGIS应用与开发AO开发 → 正文
Scenecontrol中滚轮的缩放实现
08-05-26 08:34:03 作者:王者之魂 出处:wall.cnblogs.com
由于Scenecontrol中没有响应滚轮滑动的事件,所以首先得写一个滚轮滑动事件

AxSceneControl1_Wheel

然后,在Load时,添加鼠标滚轮滑动句柄

AddHandler Me.MouseWheel, AddressOf AxSceneControl1_Wheel

这样就将鼠标滚轮滑动与AxSceneControl1_Wheel挂接起来了

然后在AxSceneControl1_Wheel中写入操作语句

    Try
      Dim pSceLoc As System.Drawing.Point = AxSceneControl1.PointToScreen(Me.AxSceneControl1.Location)
      Dim Pt As System.Drawing.Point = Me.PointToScreen(e.Location)
      If Pt.X < pSceLoc.X Or Pt.X > pSceLoc.X + AxSceneControl1.Width Or Pt.Y < pSceLoc.Y Or Pt.Y > pSceLoc.Y + AxSceneControl1.Height Then Exit Sub
      Dim scale As Double = 0.2
      If e.Delta < 0 Then scale = -0.2
      Dim pCamera As ICamera = AxSceneControl1.Camera
      Dim pPtObs As IPoint = pCamera.Observer
      Dim pPtTar As IPoint = pCamera.Target
      pPtObs.X += (pPtObs.X - pPtTar.X) * scale
      pPtObs.Y += (pPtObs.Y - pPtTar.Y) * scale
      pPtObs.Z += (pPtObs.Z - pPtTar.Z) * scale
      pCamera.Observer = pPtObs
      AxSceneControl1.SceneGraph.RefreshViewers()
    Catch ex As Exception
    End Try

这样就可以顺利响应鼠标滚轮滑动的放大与缩小了,Map、Globe中也可以如此实现,其它不支持鼠标滚轮事件的控件也可以这样做


(本文已被浏览 次)
发布人:admin
推荐给好友:发送给好友
上篇新闻:
下篇新闻:
相关评论
发表我的评论
  • 尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法;
  • 本站有权保留或删除您发表的任何评论内容;
  •   相关文章  
    AXSceneControl汽车沿着pollyline行驶
    基于AE(SceneControl)的要素信息查询源代码

    关于我们友情链接 ┋ 与我在线 ┋ 管理 ┋ TOP
     
    网站当前版本:GisPower CMS V3.0
    『GIS 动力』- http://www.gispower.org/
    联系我们:webmaster#gispower.org
    Copyright (c) 2003-2007 GisPOwer.Org. All Rights Reserved.
     

                   滇ICP备05006901号