基于MapWinGis的开发探索(三)--改善缩放、渲染、显示文本

继续对MapWinGis进行研究探索,紧接上一篇文章。MapWinGis自身有很多功能,此篇主要也是基于其内在方法来写的。除了第二点显示文本是根据其源代码进行扩展的。
原图:


一、改善缩放功能
上一版本放大缩小都必须点击下工具栏的放大、缩小。是鼠标处于缩放状态,此时必须单击鼠标左右键才能缩放。现在采用滚轮滚动时候就能缩放,操作比较方便。其实只需加载一个鼠标滚轮事件,在其设置即可。

        private void AddLayer()
        {
            this.MouseWheel+=new MouseEventHandler(Map_MouseWheel);
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {//滚轮缩放事件释放
            this.MouseWheel -= new MouseEventHandler(Map_MouseWheel);
        }

        private void Map_MouseWheel(object sender, MouseEventArgs e)
        {
            bool result = axMap1.Focus();
            if (result)
            {
                axMap1.ZoomIn(0.0005 * e.Delta);
            }
            axMap1.set_ShapePointType(layerHandle2, 0, MapWinGIS.tkPointType.ptImageList);

        }
滚轮缩放图:


二、渲染各种图层
现在就针对加载的两个图层进行渲染,一个点图层(各省市),一个面图层(中国)。填充颜色、设置边框、点大小即可。橙色图层整个中国,蓝色为边框,红色为各省市。 
        //渲染
        private void btnRender_Click(object sender, EventArgs e)
        {
            axMap1.set_ShapeLayerDrawFill(layerHandle1, true);
            fillcolor = (uint)ColorTranslator.ToOle(Color.Orange);
            linecolor = (uint)ColorTranslator.ToOle(Color.Blue);
            linewidth = 2.0F;
            //图层一(面)填充颜色、边框线颜色、线宽
            axMap1.set_ShapeLayerFillColor(layerHandle1, fillcolor);
            axMap1.set_ShapeLayerLineColor(layerHandle1, linecolor);
            axMap1.set_ShapeLayerLineWidth(layerHandle1, linewidth);

            //图层二(点)点的颜色、大小
            axMap1.set_ShapeLayerPointColor(layerHandle2, pointcolor);
            axMap1.set_ShapeLayerPointSize(layerHandle2, pointsize);
        }
渲染后的图:


三、显示文本
MapWinGis的一大缺点就是只支持点、线、面图层,无法自行设置添加文本图层这个SuperMap比较起来还是存在着很大的缺陷,这时地图上的信息就没法丰富了。可以自行往它所在的dbf文件内添加列。讲信息存放在这里,然后就可读取设置每个图层所要显示的Lable。这样就可以一定程度上解决文本的显示功能、丰富地图信息。该文本也支持放大缩小。
        //设置文本(具体下次再说里面的代码,根据MapWinGis VB源代码扩展的)
        private void btnShowLable_Click(object sender, EventArgs e)
        {
            ShowLable.GetLable(shpFile2, layerHandle2, axMap1);
        }

显示文本图:



、为点图层设置图片

点图层的每个Shape元素,默认的都是一个圆圈,大小可自行设置。此时可以通过设置点的类型丰富地图。该图片可自行添加,支持多种格式的图片,缺点在于改图片不支持放大缩小。后期将会针对这一缺点进行改进。使其支持矢量式的放大、缩小。
        private void btnSetImage_Click(object sender, EventArgs e)
        {//设置点类型
            MapWinGIS.Image image = new MapWinGIS.Image();
            string fileName=Application.StartupPath + @"\MapIcon\City2.png";
            image.Open(fileName, MapWinGIS.ImageType.PNG_FILE, false, null);
            image.TransparencyColor = (uint)ColorTranslator.ToOle(Color.White);
            image.UseTransparencyColor = true;
            axMap1.set_ShapeLayerPointType(layerHandle2, tkPointType.ptUserDefined);
            axMap1.set_UDPointType(layerHandle2, image);
        }

设置图片后的图:



希望各位大侠多多指导,欢迎拍砖。我讲继续努力,下回继续探索总结MapWinGis……

转载于:https://www.cnblogs.com/wakerobin/archive/2009/09/19/1570196.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/299750.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

T-SQL利用Row_Number函数实现分页

SQL: CREATE PROCEDURE PagingViewTest (currentPageIndex INT, --页序号pageSize INT, --页大小pageCount INT OUTPUT --返回值,总记录数 ) AS BEGIN--取总记录数 SELECT pageCountCOUNT(OrderID) FROM dbo.sale_Order; --利用CTE以提高执行效率 WITH Result AS (…

程序员没有女朋友的原因,我终于找到了!

全世界只有3.14 % 的人关注了青少年数学之旅程序员没有女朋友的原因▼程序员大脑里想的▼每天要学习太多语言,程序员太忙了▼女朋友 VS 编译器▼程序员sao起来,还需要女朋友吗?▼电脑才是程序员的女朋友▼互道晚安后,会不会偶遇在…

dotNet 5 中执行 Node.js

在低代码产品中为了扩展功能,我们在业务编排中会扩展代码块的功能,允许用户直接在界面中进行代码(Node.js、 Python)的编写,来实现取数或者赋值的一些功能。本文简单介绍下在 dotNET 5 中怎么样进行 Node.js 的调用以及…

求职学习笔记|并发编程知识点常见问题总结(一)

1. 什么是阻塞队列?阻塞队列的实现原理是什么? 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。 这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可…

实验——Windows常用网络测试命令

<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />1.Ipconfig该命令可以检查网络接口配置。如果用户系统不能到达远程主机&#xff0c;而同一系统的其他主机可以到达&#xff0c;那么用该命令对这种故障进行判断是有必要的。当主机…

Protel中的快捷键使用(网上资源)

Protel中的快捷键使用&#xff08;网上资源&#xff09; 使用快捷键之前&#xff0c;将输入法切换至中文&#xff08;中国&#xff09;状态 Enter——选取或启动 Esc——放弃或取消F1——启动在线帮助窗 Tab——启动浮动图件的属性窗口Page Up——放大…

为什么会有蟑螂这种反人类的动物出现?

全世界只有3.14 % 的人关注了青少年数学之旅相信很多人都听过南北蟑螂的故事&#xff0c;即使是一个可以打死老虎的北方人在南方蟑螂面前也会惊慌失措。除此之外&#xff0c;我们日常生活里和蟑螂的故事还有很多&#xff0c;比如&#xff1a;当你打开灯的时候&#xff0c;会有一…

Ajax使用初步

Ajax定义为“Asynchronous JavaScript XML”的简称&#xff0c;也就是异步的JavaScript和XML处理。从原理上看&#xff0c;主要是Ajax可以通过调用HttpRequest实现与服务器的异步通讯&#xff0c;并最终在网页中实现丰富友好的用户界面Ajax使用初步&#xff0c;配置步骤1.把Aj…

WPF 如何流畅地滚动ScrollViewer

WPF开发者QQ群&#xff1a; 340500857 | 微信群 -> 进入公众号主页 加入组织欢迎转发、分享、点赞、在看&#xff0c;谢谢~。 前言看了看原生UWP的ScrollViewer&#xff0c;滑动很流畅(例如 开始菜单)&#xff0c;但是WPF自带的ScrollViewer滚动十分生硬..突发奇想&#x…

面试难点!常用算法技巧之“滑动窗口”

算法简介 滑动窗口&#xff0c;顾名思义&#xff0c;就是有一个大小可变的窗口&#xff0c;左右两端方向一致的向前滑动&#xff08;右端固定&#xff0c;左端滑动&#xff1b;左端固定&#xff0c;右端滑动&#xff09;。 可以想象成队列&#xff0c;一端在push元素&#xf…

回公司上班

回到公司上班了&#xff0c;悠闲的生活从此开始.....

10岁吊打职业教师的天才,仅用10篇论文称霸数学界160多年,40岁英年早逝却迄今无人超越...

全世界只有3.14 % 的人关注了青少年数学之旅今天超模君就给大家讲讲黎曼。人类历史上最伟大的数学天才的德国数学家是十九世纪数学界的巅峰——节选自《数学之旅 闪耀人类的54个数学家》1826年&#xff0c;黎曼作为家中的老二在德国汉诺威的布雷斯伦茨村出生了。他的父亲是村里…

NET问答: 如何集中化统一验证 Authorization

咨询区 Felipe Deveza&#xff1a;我自己实现了一个 basic 验证&#xff0c;现在我的做法是在每一个 Action 中都提取 Request.Headers["Authorization"] 进行权限验证。[HttpGet] public IActionResult Get() {string token Request.Headers["Authorization&q…

c#操作excel后关闭excel.exe的方法

C#和Asp.net下excel进程一被打开,有时就无法关闭, 尤其是website.对关闭该进程有过GC、release等方法&#xff0c;但这些方法并不是在所有情况下均适用。 于是提出了kill process的方法, 目前我见过的方法多是用进程创建时间筛选excel.exe进程, 然后kill 。 这样的…

22届腾讯暑期实习三轮面试面经(已oc)

投递岗位&#xff1a;IEG非工作室&#xff0c;java选手&#xff0c;岗位是C和go 3.6找同学内推 3.8一面&#xff1a;&#xff08;电话面试&#xff0c;45min&#xff09; 1、哈希表、concurentHashMap源码&#xff0c;扩容机制 2、多线程死锁、解决办法 3、线程池介绍一下&am…

AngularJS学习---REST和自定义服务(REST and Custom Services) ngResource step 11

1.切换目录 git checkout step-11 npm start 2.效果图 效果图和step 10的没有什么差别,这里主要的改动都是代码,代码做了很多优化,这里效果图就不再贴出来了. 3.实现代码 step-10和step-11之间的差别:https://github.com/angular/angular-phonecat/compare/step-10...step-11 D…

面试可以,但别打扰我睡觉! | 今日最佳

全世界只有3.14 % 的人关注了青少年数学之旅&#xff08;图源科技九洲君&#xff0c;侵权删&#xff09;

使用网页对话框来显示图片 window.open()

这个主要用到了JS中的 window.open(url,windowname,location)url 目标窗口的url 如果url 是一个空字符串&#xff0c;浏览器将打开一个空白窗口windowname window对象名称location 窗口属性设置可选参数Default.aspx 页如下放置一个linkbutton,并写下事件处理protected void L…

基于事件驱动架构构建微服务第3部分:Presenters, Views和Controllers

原文链接&#xff1a;https://logcorner.com/building-microservices-through-event-driven-architecture-part3-presenters-views-and-controllers/在本文中&#xff0c;我将实现Presentation(展示层)。这里的展示层不是指用户界面而是Web API。也可以在实现展示层之前先实现r…

hashtable与HashMap区别

看到了很多的面试题集里都有这么一个题:HashMap和Hashtable的区别,自己也看了好几遍了,总是不记得,写下来当是一次笔记吧. 区别一它们的父类不同 public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>, Cloneable, java.io.Serializabl…