基于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 的调用以及…

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

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

Ajax使用初步

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

WPF 如何流畅地滚动ScrollViewer

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

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

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

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

全世界只有3.14 % 的人关注了青少年数学之旅(图源科技九洲君,侵权删)

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

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

牛逼!不得不服,第一次有人把Java 反射机制讲解这么透!

反射概述 什么是反射 将类的各个组成部分封装为其他对象的过程就叫做 反射,其中 组成部分 指的是我们类的 成员变量(Field)、构造方法(Constructor)、成员方法(Method)。 使用反射的优缺点 …

拿破仑最欣赏的数学家,师从拉格朗日,撕逼泊松,一生痴迷热学最后却死于热学...

全世界只有3.14 % 的人关注了 青少年数学之旅 这几天,终于变凉了,超模君再也不用被热死了。 但炎热夏日的离去,也让超模君想起了那个和热脱不了关系的数学家——傅里叶。 “对自然界的深入研究是数学发现最丰富的源泉” ——节选自 《数学之旅…

记一次 .NET 某智慧水厂API 非托管内存泄漏分析

一:背景 1. 讲故事七月底的时候有位朋友在wx上找到我,说他的程序内存占用8G,托管才占用1.5G,询问剩下的内存哪里去了?截图如下:从求助内容看,这位朋友真的太客气了,动不动就谈钱&…

直接开撸! 阿里Spring高频面试题泄露,持续更新~

阿里HR面试核心的几个问题: 1、你为什么离职? 2、你怎么看待自己的职业生涯?(包括怎么平衡家庭和工作的关系、加班、选择一家公司时的考量、location等) 3、薪资期望 4、项目中遇到的最大挑战是什么?怎么…

重磅!Nature盘点年度十佳论文,生命科学占据半壁江山,中国学者表现亮眼

全世界只有3.14 % 的人关注了青少年数学之旅科学是人类进步的阶梯!在当今社会,科学技术的发展进步将为人类社会带来巨大的效益,毫不夸张的说,科学指引并推着着人类文明的进程。基础科学作为科学技术的理论基石,其重要性…

zend guard6的使用

1.生成key edit->preferences->license Keys->generate 2.新建product license文件 3.新建Zend Guard项目文件 需要注意新建项目的第二项需要英文路径 4.在项目上按右键 选择configure 初始界面是 如果要用做授权,点击security按键 然后设置license文件等 附上php.in…

理解T-SQL: 脚本和批处理

脚本能够将相应的T-SQL命令组织起来,实现一个完整的功能目标。脚本提供了变量、分支、循环等控制语句,可以用来实现一些复杂的任务。通过组织一系列的SQL命令编成脚本和批处理,也减低了数据库管理的复杂性。 1. USE语句 没啥好讲的&#xff0…

凉凉!面试阿里我被Redis技术专题给搞的昏倒在地~

凉凉!面试阿里我被Redis技术专题给弄死了~ 📚我本以为我可以像是别的博主一样去阿里面试随随便便,因为Redis,我直接被阿里大佬淦翻在地上 好了不装了 没过没关系 我总结了一些这些最难的知识点!!&#xff0…

与众不同 制作会唱歌的WinRAR - imsoft.cnblogs

为了使用方便,我们可能会把RAR压缩包制作成自解压文件。WinRAR自带的自解压模块虽然使用很方便,但千篇一律的外观看起来实在 乏味。其实,只要通过简单改造,你就可以制作出与众不同,声色俱佳的WinRAR自解压界面&#xf…

看到这一幕,我甚至都想戒烟了。。 | 今日最佳

全世界只有3.14 % 的人关注了青少年数学之旅(图源网络,侵权删)

c#3.0关于JSON简单操作的实用帮助类(泛型实现)

关于json的操作,网上一搜一大把。避免重复造轮子,整理发布一个笔者在项目开发中经常用到的一个json实用帮助类,泛型实现,非常方便。不废话了,贴代码:1、json操作的帮助类: Codeusing System;usi…