将PDA矢量图控件开源

简介:     今将PDA矢量图控件开源。该控件是一个矢量图展示性控件,这是根据需求而定的,因此我没有加上一些实时的编辑操作的支持。该控件是在2007年3月份到4月之间完成的。其效果如图所示:(在PPC2002模拟器中)            由于PPC的屏幕太窄,所以右侧的工具栏没有办法展示全部按钮,其他按钮放在了菜单的“当前工具”中。

    今将PDA矢量图控件开源。该控件是一个矢量图展示性控件,这是根据需求而定的,因此我没有加上一些实时的编辑操作的支持。该控件是在2007年3月份到4月之间完成的。其效果如图所示:(在PPC2002模拟器中)

 

    

    由于PPC的屏幕太窄,所以右侧的工具栏没有办法展示全部按钮,其他按钮放在了菜单的“当前工具”中。可以用鼠标拖动(Pan工具),用鼠标矩形缩放,点击设置中心点,还原到适应全图,放大,缩小,双击地图对象(菜单中选中查看信息工具)。

    此外就是使用控件本身提供的三个对话框,可以实现图层管理控制(例如是否显示,是否可点击),实现导航等功能,不过由于PPC一次只能显示一个窗口,所以导航功能(本来是模拟Photoshop的导航图效果的)的视觉效果将大打折扣,因为正常的效果是一个浮动在控件上的小窗口,可以看到在导航对话框上的拖动实时反应到控件。

    源码是依然已 VS2003 + .NET Compact Framework 1.1 的形式提供的(如果使用更高级的IDE请自行升级),源码是使用C#语言编写的。在那个时候的.NET还有很多今天的特性没有添加,例如泛型等。所以在代码里可以看到在应该使用泛型的时候,我是用一种比较费力的重复性编码来完成的。

 

    在附件中我放置了几个从实际管理系统中导出的单线图,还有一个从 mif 地图转换而来的世界地图(如上图所示)。还有一份我当年写的技术文档,不过这份文档写的不够完整,只写了一小部分信息,主要是描述我的自定义文件格式。在 AssemblyInfo.cs 中还可以看到我当年用注释形式记录的一些笔记。

 

    在控件的代码里有一部分算法,例如判断点捕捉线段,多边形,还有图元的几何变换和逆变换(平移,缩放,旋转),其中有一部分我曾经写过文章讲解过,例如图元变换,视图参数缓存的环形队列结构,这些在当年我曾经大量演算,消耗了不少草稿纸,下面是一部分我当年的演算草稿:

 

    

 

    最后我提供的是源码的下载连接:

    http://files.cnblogs.com/hoodlum1980/GisCtrl_Src.rar

 

    这个源码之前我曾经提供了一个DLL版本的范例,即《发布一个用于WinCE的矢量图控件》这篇文章中所提到的控件。后来我多次提到要将它开源,但因为精力所限,一直没有兑现,今天我特意将它开源。由于我的研究方向在2008年开始从C#.NET逐渐转移到C++方向,所以我今后也不太可能继续去维护它了,所以开源也许是一个唯一比较好的选择。这个控件的代码我曾经说过,代表了我当时的最高水平。我在编写它的过程中,主要考虑的是代码效率,希望这个控件具有尽可能更好的性能,尽可能更少的内存使用。最终产出的就是这样的一个控件,它的性能和功能已能很好的满足当年的项目需求:即展示单线图,并且能把图上的对象和设备信息数据关联起来,当用户在单线图上双击,将弹出设备的属性对话框,巡检员可以修改设备属性,然后再回到办公室将修改同步到数据库,当然我们当时还是设想了用gprs实时同步数据的,包括在野外实时差分校正GPS数据等,但是受限于整个环境和研发能力,这些想法在那时并没有全部实现。在这个项目中,这个控件只是一个模块,此外还有其他的模块,例如有的具有很复杂的逻辑,在实现时具有很高的挑战性和难度,还有一些我觉得实现的较好地方,但是他们多数是为特定需求定制的,所以就不都提供了。

 

    --hoodlum1980

目录
相关文章
|
物联网 定位技术 开发工具
HMI-64-【多媒体】Ui全部制作完成
重点:这段时间公司项目换平台,在加上家里娃娃出生,是真的没有时间搞这个项目,这个项目先只能按下暂停键。不过庆幸的是资源文件全部都做完了,喜欢的小伙伴,可以联系我,继续搞下去。
|
定位技术 索引
ArcGIS制图技巧:边框的选择与制作
ArcGIS制图技巧:边框的选择与制作
326 0
Revit二次开发DockableDialog (可停靠窗体)
Revit二次开发DockableDialog (可停靠窗体)
Revit二次开发DockableDialog (可停靠窗体)
DreamWeaver软件中使用布局网格
DreamWeaver软件中使用布局网格
340 0
|
存储 JSON 缓存
从零开发一款图片编辑器Mitu
我们知道,为了提高企业研发效能和对客户需求的快速响应,现在很多企业都在着手数字化转型,不仅仅是大厂(阿里,字节,腾讯,百度)在做低代码可视化这一块,很多中小企业也在做,拥有可视化低代码相关技术背景的程序员也越来受重视。
582 0
|
前端开发
UGUI系列-屏幕自适应多分配率适配(Untiy3D)
1、Canvas的属性配置 2、Canvas Scaler的属性配置 3、根据不同的屏幕的比例动态修改缩放基准
文字处理技术:与布局相关的功能
文字处理技术:与布局相关的功能
100 0
|
C#
借助Photoshop,Illustrator等设计软件进行WPF图形图像的绘制
原文:借助Photoshop,Illustrator等设计软件进行WPF图形图像的绘制 本文所示例子是借助第三方设计软件,制作复杂的矢量图形,转成与XAML酷似的SVG,再转换成xaml而实现的。
1250 0
|
C# 开发工具 编解码
WPF中在摄像头视频上叠加控件的解决方案
原文:WPF中在摄像头视频上叠加控件的解决方案 一、视频呈现   前段时间,在一个wpf的项目中需要实时显示ip摄像头,对此的解决方案想必大家都应该知道很多。在winform中,我们可以将一个控件(一般用panel或者pictruebox)的句柄丢给摄像头的sdk以实现该功能,而在wpf中我们同样可以使用该方案快速实现。
1412 0
|
前端开发 图形学
Unity 之大屏幕多点触控插件 TouchScript 9.0 入门指南(上)
在端游上大家应该多数都使用过的EasyTouch插件,在EasyTouch 5.0.17 最新版本扩展方法中我有过简单的介绍,今天说一下另一款触摸插件,它非常适合做展示类大屏幕的多点触控TouchScript,在Unity上的AssetStore也是五...
3411 0