MapInfo开发心得——控件篇【转】
1 /**//// <summary>
2 /// 缩放等级改变事件
3 /// </summary>
4 /// <remarks>在本地图的缩放等级发生变化后触发</remarks>
5 public event EventHandler ZoomLevelChanged;
这个事件的使用如下所示:
/**//// <summary>
/// 设置地图显示比例
/// </summary>
/// <remarks>窗体上所有缩放事件均进入该方法进行</remarks>
/// <param name="ZoomLevel"></param>
public void SetZoomLevel (int ZoomLevel)
{
_helper.Zoom ( ZoomLevel );
_zoomLevel = _helper.ZoomLevel;
if ( ZoomLevelChanged != null )
{
//触发事件
ZoomLevelChanged ( this, new MapControlEventArg ( _zoomLevel ) );
}
}
/// <summary>
/// 设置地图缩放层级
/// </summary>
/// <param name="map">地图实例引用</param>
/// <param name="zoomLevel">缩放层级</param>
private void SetZoomLevel ( Map map,int zoomLevel )
{
try
{
map.Zoom = ExchangeZoomLevel ( zoomLevel );
}
catch
{ }
}
/// <summary>
/// 保存对父控件的引用
/// </summary>
private System.Windows.Forms.Control _control;
/// <summary>
/// 维护当前的等级Label
/// </summary>
private List<System.Windows.Forms.Label> levelLabelList;
/// <summary>
/// 控件左上角显示坐标X
/// </summary>
private readonly int xPosition = 10;
/// <summary>
/// 控件左上角显示坐标Y
/// </summary>
private readonly int oginYPosition = 10;
/// <summary>
/// 当前缩放等级Label颜色
/// </summary>
private System.Drawing.Color currentLevelLabelColor = System.Drawing.Color.Blue;
/// <summary>
/// 各控件的ToolTip
/// </summary>
System.Windows.Forms.ToolTip tt;
1 /**//// <summary>
2 /// 构造缩放工具
3 /// </summary>
4 public void BuildZoomTool ( )
5 {
6 System.Windows.Forms.Control mc = ( (MapControl) _control ).mapControl;
7 System.Windows.Forms.Label labelZoomIn = CreateZoomInLabel ();
8 mc.Controls.Add ( labelZoomIn );
9 int yPosition = 32;
10 //循环次数与最大缩放等级有关
11 for ( int i = MapHelper.MinZoomLevel; i <= MapHelper.MaxZoomLevel; i++, yPosition += 15 )
12 {
13 System.Windows.Forms.Label levelLabel = CreateLevelLabel ( i, yPosition+oginYPosition );
14 levelLabelList.Add ( levelLabel );
15 mc.Controls.Add ( levelLabel );
16 }
17 System.Windows.Forms.Label labelZoomOut = CreateZoomOutLabel ( yPosition+oginYPosition );
18 mc.Controls.Add ( labelZoomOut );
19 }
20
1 private System.Windows.Forms.Label CreateLevelLabel ( int zoomLevel,int yPosition )
2 {
3 System.Windows.Forms.Label label = new System.Windows.Forms.Label ();
4 label.BackColor = System.Drawing.Color.White;
5 label.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
6 label.Font = new System.Drawing.Font ( "宋体", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ( (byte) ( 134 ) ) );
7 label.Text = " ";
8 label.Name = "lblLevel" + zoomLevel.ToString ();
9 label.Tag = zoomLevel;
10 label.Cursor = System.Windows.Forms.Cursors.Hand;
11 label.Location = new System.Drawing.Point ( xPosition, yPosition );
12 label.Size = new System.Drawing.Size ( 37, 11 );
13 label.Click += new EventHandler ( label_Click );
14 tt = new System.Windows.Forms.ToolTip ();
15 tt.ShowAlways = true;
16 tt.SetToolTip ( label, "缩放地图到"+zoomLevel.ToString()+"级" );
17 return label;
18 }
19
1 void label_Click ( object sender, EventArgs e )
2 {
3 System.Windows.Forms.Label label = (System.Windows.Forms.Label) sender;
4 MapControl mc = (MapControl) _control;
5 mc.SetZoomLevel ( Int32.Parse ( label.Tag.ToString () ) );
6 }
1 public void mc_Map_MouseDoubleClick ( object sender, MouseEventArgs e )
2 {
3 switch ( e.Button )
4 {
5 case MouseButtons.Left:
6 ZoomIn ();
7 break;
8 case MouseButtons.Right:
9 ZoomOut ();
10 break;
11 }
12 _helper.SetCenter ( e.Location );
13 }
14
这是最后的效果,当点击任意的缩放等级,地图就会缩放到适当的大小
MapInfo开发心得——控件篇【转】相关推荐
- MapInfo开发心得——控件篇
前阵做一个项目过程中,需要结合MapInfo进行地方展示开发,积累一点点心得与大家共享 以下所有基于MapXtreme 6.6 MapInfo提供了足够强大的WinForm地图空间,可以很方便地在VS ...
- 【Android】App开发-控件篇
App开发是一个工作量比较大的项目,要学习App开发首先我们要先去学习手机中的各类工具和信息是怎么运行的,我们可以使用哪些工具来对手机进行设置.这里我采用的开发工具是Android studio. 目 ...
- C#进行MapX二次开发之控件基本操作
上篇介绍了MapX的部分基本使用代码,包括放大.缩小.缩放到初始大小(全图).平移.矩形选择.圆形选择.箭头.打开图层对话框 .打开ActiveX属性对话框 .添加符号等基本操作代码,本篇继续探讨一些 ...
- 服务器控件开发——组合控件(5)
组合控件, 顾名思义就是指由2 个或2 个以上的已存在的控件组合在一起, 协同工作从而完成新功能的新的服务器控件组合控件由于能 够重用已经存在控件的功能, 能够最大限度的提升我们的开发效率.组合控件就 ...
- 27.4.1 开发ActiveX控件
本控件只是个示例,功能比较简单,共有三个方法,本别是获取当前个人存储区证书列表.获取指定证书.使用指定证书签名.在Windows下使用Visual C++ 6.0开发ActiveX控件的步骤如下所示. ...
- 开发ActiveX控件调用另一个ActiveX系列0——身份证识别仪驱动的问题
程序员要从0下表开始,这篇是介绍这个系列的背景的,没有兴趣的人可以直接跳过. 为什么要开发ActiveX控件 由于工作需要,我们开发了一个网站,使用了一款身份证识别仪的网页ActiveX(OCX)插件 ...
- HarmonyOS应用开发-基本控件
感谢关注HarmonyOS,为了便于大家学习特将鸿蒙2.0基础教学内容整理如下: 1.HarmonyOS应用开发-视频播放 https://developer.huawei.com/consumer/ ...
- 使用vs2008c++语言开发activex控件教程,使用VS2010 C#开发ActiveX控件(上)
要开发Web版的读卡程序,大体思路如下: 1.使用C#对原始的Dll进行封装,这里要封装两部分内容,一部分是串口通信的功能,一部分是对卡读写的功能. 2.开发ActiveX控件调用封装后的Dll,使用 ...
- jQuery:收集一些基于jQuery框架开发的控件/jquery插件2
Horizontal accordion: jQuery 基于jQuery开发,非常简单的水平方向折叠控件. 主页:http://letmehaveblog.blogspot.com/2007/10/ ...
最新文章
- 在IIS上安装 thinkphp的方法
- 当当网新用户注册界面——界面源码
- 人受失败后多久可以做第二次_做完皮秒多久可以用自己的护肤产品、过来人分享皮秒后怎么护肤?...
- 斗罗大陆真3D手游实力上线,带你感受魂兽猎杀的超燃时刻
- 力扣--8字符串转换整数 (atoi)
- 链接数据库 远程事务的处理方式
- Android 根据sensor重力感应 app横竖屏旋转
- ubuntu中的内网穿透cpolar下载安装,后台运行及开机自启
- 嵌入式系统概述及特点
- 项目管理之 项目阶段划分
- java +Selenium 2 环境搭建
- 李开复写给中国大学生的第四封信
- 一位程序员的外国梦-国外面试经验谈
- 利用WordPress官方插件创建sitemap站点地图的最佳方法
- Excel去重并进行统计(对列)
- VS2010自定义背景设置
- 抽象类和接口-形状抽象类
- Python有趣|寻找知乎最美小姐姐
- 一段计算派(∏)的代码
- 全网最全的Qt下载途径(多种下载通道+所有版本)
热门文章
- Docker网络相关
- 【Linux 内核 内存管理】优化内存屏障 ④ ( 处理器内存屏障 | 八种处理器内存屏障 | 通用内存屏障 | 写内存屏障 | 读内存屏障 | 数据依赖屏障 | 强制性内存屏障 |SMP内存屏障 )
- 【错误记录】Android Studio 编译报错 ( Error:Connection timed out: connect | 更新配置依赖仓库方式 )
- 【错误记录】PyCharm 运行 Python 程序报错 ( PEP 8: E402 module level import not at top of file )
- 【开发环境】Windows 中安装 Python 各个版本 ( 下载 Python 各版本 SDK | 安装 Python )
- 【计算机网络】数据链路层 : 概述 ( 基本概念 | 功能 | 为 “网络层“ 提供的服务 )
- 【数据挖掘】K-Means 二维数据聚类分析 ( K-Means 迭代总结 | K-Means 初始中心点选择方案 | K-Means 算法优缺点 | K-Means 算法变种 )
- 【Kotlin】Kotlin 类的继承 一 ( 类继承基本方式 | final 关键字 | 子类主构造函数 | 子类次构造函数 )
- 利用Docker设置Node.js
- Easyui textbox 组件设置css样式