CityMaker学习教程11 创建和移动标签
1、加载一个FDB,并在加载结束的时候绑定函数RcMouseClickSelect:
this.axRenderControl1.RcMouseClickSelect += new Gvitech.CityMaker.Controls._IRenderControlEvents_RcMouseClickSelectEventHandler(axRenderControl1_RcMouseClickSelect);
2、创建标签代码
ILabel label = objManager.CreateLabel(rootId);label.Text = "label" + labelCount.ToString();IPoint p = geoFactory.CreatePoint(gviVertexAttribute.gviVertexAttributeZ);p.SetCoords(0, 0, 0, 0, 0);label.Position = p;labelCount++;currentLabel = label;this.axRenderControl1.InteractMode = gviInteractMode.gviInteractSelect;this.axRenderControl1.MouseSelectMode = gviMouseSelectMode.gviMouseSelectMove | gviMouseSelectMode.gviMouseSelectClick;this.axRenderControl1.MouseSelectObjectMask = gviMouseSelectObjectMask.gviSelectFeatureLayer | gviMouseSelectObjectMask.gviSelectTerrain;mode = 1;
3、对应的鼠标点击事件代码
void axRenderControl1_RcMouseClickSelect(object sender, Gvitech.CityMaker.Controls._IRenderControlEvents_RcMouseClickSelectEvent e){if (e.pickResult == null)return;if (e.eventSender == gviMouseSelectMode.gviMouseSelectMove){if (currentLabel != null)currentLabel.Position = e.intersectPoint;}else if (e.eventSender == gviMouseSelectMode.gviMouseSelectClick){switch (mode){case 1:{this.axRenderControl1.InteractMode = gviInteractMode.gviInteractNormal;}break;case 2:{if (clickCount == 0){ILabelPickResult pr = e.pickResult as ILabelPickResult;if (pr != null){currentLabel = pr.Label;clickCount++;}}else if (clickCount == 1){this.axRenderControl1.InteractMode = gviInteractMode.gviInteractNormal;}}break;}}}
4、标签移动代码
private void toolStripButtonEditLabel_Click(object sender, EventArgs e){this.axRenderControl1.InteractMode = gviInteractMode.gviInteractSelect;this.axRenderControl1.MouseSelectMode = gviMouseSelectMode.gviMouseSelectMove | gviMouseSelectMode.gviMouseSelectClick;this.axRenderControl1.MouseSelectObjectMask = gviMouseSelectObjectMask.gviSelectLable | gviMouseSelectObjectMask.gviSelectFeatureLayer | gviMouseSelectObjectMask.gviSelectTerrain;string tmpCursorPath = Path.Combine(Application.StartupPath.Substring(0, flag), @"Samples\Media\cursors\Cross.cur");this.axRenderControl1.MouseCursor = tmpCursorPath;currentLabel = null;mode = 2;clickCount = 0;}
5、直接集成这几个按钮事件到你的工程。
技术支持 sunhaihong@gvitech.com
MrSun
CityMaker学习教程11 创建和移动标签相关推荐
- CityMaker学习教程14 水面图层的创建
在CityMaker中,图层的创建稍显麻烦,现在讲下如何创建水面层. 1.打开Builder并创建一个空的场景. 2.创建一个空的数据源或者选择一个没加载的数据源. 3.右键数据源,创建个数据集,或者 ...
- CityMaker学习教程12 osg模型的创建
1.加载一个FDB文件到场景. 2.加载完绑定事件 axRenderControl1.RcMouseClickSelect += AxRenderControl1_RcMouseClickSelect ...
- CityMaker学习教程08 一个示例,创建漫游路径
1.在看完CS代码后可以自己写程序了,我刚写了一个由线创建动态路径的代码,给大家参考. 2.配置完场景,加载完FDB. 3.代码片段 _axcontrol.axRenderControl1.Inter ...
- CityMaker学习教程13 osg模型的移动
1.在CityMaker中没有onframe函数,所以模型和标签的移动都要靠鼠拾取这个函数,这个函数能干非常多的事情,几乎所有的CityMaker交互事件都要绑定这个函数,前两节讲了标签的移动,这里模 ...
- CityMaker学习教程03 数据的导入
了解了软件的模块分类和授权之后,我们便可以开始使用软件了,首先讲一下如何导入shape数据到平台内. 1.打.打开CityMaker Builder 2.点击新建场景,如果是WGS84场景,请自己选择 ...
- CityMaker学习教程01 模块说明
首先说一下CityMaker的软件获取,如果是第一次接触想试用该软件,请登录http://www.citymakeronline.com/trial.htm,进行试用申请,为了你能一次性试用成功,最好 ...
- CityMaker学习教程06 数据的发布
CityMaker的网络发布工具CityMaker Server,和arcgis的server和skyline的gate+sfs有些相像,能直接将FDB(矢量和模型),ted(地形和影像)以服务方式进 ...
- Unity3D 学习教程 4 创建物体
点击红线部分 创建一个物体 创建一个立方体 ------------------------------------------效果---------------------------------- ...
- CityMaker学习教程09 一个示例,多窗体,画中画,多屏幕显示
1.CityMaker采用同一个父窗体,多个申请窗体的方式进行多屏功能,并非添加另一个控件,不存在另一个场景,只是在原来的场景中扩展,你可以想象为复制出来. 2.实现多屏幕很简单,主要靠一个属性来控制 ...
最新文章
- Java 四种引用类型:强引用、软引用、弱引用、虚引用
- 自然语言处理工具hanlp自定义词汇添加图解
- 基于React脚手架集成Cesium
- C#编写的windows程序随系统启动
- ASP.Net 管道模型 VS Asp.Net Core 管道 总结
- java变换变量赋值_Java变量的类型转换
- 机器学习朴素贝叶斯算法_机器学习中的朴素贝叶斯算法
- 前端学习之HTML基本标签介绍
- 有人说智能制造装备前景大好,那么智能制造装备产业园的潜力如何?
- 【开发随笔】以强化学习环境 gym 库为例:为什么日常中我应该试图标准化接口?
- 蓝桥杯真题:杨辉三角形
- linux /etc/fstab详解
- 怎么使用手机号申请邮箱,注册移动手机邮箱有哪些步骤?
- WiFi偏门协议(四):增强的传输机制802.11aa
- 无线移动通信技术快速发展历程和趋向(转)
- 机器学习——算法介绍-4
- html5 自动矢量化,ArcScan自动矢量化
- 2022-2028全球与中国定时器市场现状及未来发展趋势
- Exemplar-based image inpainting(+code)
- CSS3 线性渐变循环动画