发布一个用于WinCE的矢量图控件

       发布一个在wince操作系统下,采用.net compact framework 1.0 ( c#)开发的矢量图控件,我于2007年3月份集中一个月的经历完成了它。当然,它的前身是2005年12月我写的第一个矢量图控件,在后来我在此基础上改进了很多地方,针对具体应用做了重新设计并集中精力把它完成,由于属于再次设计,因此它的架构设计和编码中凝聚了我此前开发中的经验和积累,它是我当时最满意的一个模块,对它的架构和可维护性以及运行性能都感到令我感到非常满意,可以说代表了我当时的最高水平。当然从今天来看里面还有一些缺点和经验不足之处。

       例子代码我命名为GisCtl,是因为它原本是希望完成GIS的功能,但是实际上距离GIS还有一定的距离和偏差。该模块的底层算法和全部编码全部是我独自设计,这其中涉及了一系列图形捕捉算法,图元几何变换和逆变换,图层管理,缩略图,视图参数缓存环形队列,文件格式定义和IO等等。在编写该模块中的一些算法时我积累了很厚的演算草稿纸,用到了很多数学和几何知识,当然也感谢飘渺水云间BBS上ZOL版一些热心网友的支持和对我的解答。在编写这个模块时,涉及到一些设计模式,数据结构,算法的应用,比如鼠标在图上点击选择对象时,有一系列判别算法。比如图元和链接对象采用了是类似flyweight模式以节省内存(在我的另一篇随笔《图元几何变换与flyweight模式》中有讲解),比如视图缓存采用了环形的数据结构(在《环形视图堆栈》中有讲述),比如导航图采用了观察者(订阅)模式。该模块的使用方法集中在例子里,这里就不再叙述了。文档说明还暂时不能提供。目前该模块能读写我的自定义格式图形文件,以及mif格式文件。由于需求,该控件没有包装例如用鼠标创建,拖曳,变换对象的操作,但可以用代码来实现这些功能。      

       这个模块属于我实际工作的项目的一部分。我希望它能发挥更大的价值,而不仅仅是沉寂。

       该模块文件名是LineViewCtl.dll, 命名控件是LineViewLib;该dll位于压缩包内,项目中也附带了两个从实际系统中导出的图形文件。

       在模拟器中运行的效果图:(由于模拟器不支持中文,所以中文没能正确显示)

         

          补充我在技术文档中画的一副图,表达了这个控件的内部组织结构:

 

             

          范例代码:

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

           GisCtlDemo.rar 

时间: 2024-09-22 11:19:47

发布一个用于WinCE的矢量图控件的相关文章

将PDA矢量图控件开源

今将PDA矢量图控件开源.该控件是一个矢量图展示性控件,这是根据需求而定的,因此我没有加上一些实时的编辑操作的支持.该控件是在2007年3月份到4月之间完成的.其效果如图所示:(在PPC2002模拟器中)   由于PPC的屏幕太窄,所以右侧的工具栏没有办法展示全部按钮,其他按钮放在了菜单的"当前工具"中.可以用鼠标拖动(Pan工具),用鼠标矩形缩放,点击设置中心点,还原到适应全图,放大,缩小,双击地图对象(菜单中选中查看信息工具). 此外就是使用控件本身提供的三个对话框,可以实现图层管

打造一个通用ASP.NET数据分页控件

asp.net|分页|控件|数据 对于几乎所有的数据表现Web应用来说,组织好数据的显示方式.避免给用户带来混乱的感觉就是最主要的目标之一.每个页面显示20条记录当然是可以接受的,但每页显示10000条记录就很容易给用户带来不便了.将数据分成多个页面显示,即对数据进行分页,是解决此类问题的最常见的办法. 一.慨述 ASP.NET本身只提供了一个支持数据分页的控件,即DataGrid分页控件,不过它比较适合Intranet环境使用,对于Internet环境来说,DataGrid分页控件提供的功能似

一个相当独立的.通用分页控件c#源码

分页|控件      通用ASP.NET数据分页控件 对于几乎所有的数据表现Web应用来说,组织好数据的显示方式.避免给用户带来混乱的感觉就是最主 要的目标之一.每个页面显示20条记录当然是可以接受的,但每页显示10000条记录就很容易给用户带来不便了.将数据分成多个页面显示,即对数据进行分 页,是解决此类问题的最常见的办法. 一.慨述 ASP.NET本身只提供了一个支持数据分页的控件,即 DataGrid分页控件,不过它比较适合Intranet环境使用,对于Internet环境来说,DataG

创建用于ASP.NET的分页控件

asp.net|创建|分页|控件 从程序员的角度来看,Microsoft SQL Server? 查询的最大缺陷之一就是返回的行数通常比应用程序的用户界面实际可以容纳的行数要多得多.这种尴尬情形经常将开发人员陷于困境.开发人员是应该创建一个非常长的页面,让用户花时间去滚动浏览,还是应该通过设置一个手动分页机制来更好地解决这个问题? 哪种解决方案更好,在很大程度上取决于要检索的数据的特性.由多个项目(如搜索结果)组成的较长列表,最好通过各页大小相等.每页相对较短的多个页面显示.由单个项目(如文章的

systreeview32-跨进程控制SysTreeView32树状图控件的难题

问题描述 跨进程控制SysTreeView32树状图控件的难题 最近公司在做一个智能化股票交易的项目,需要控制股票交易软件树状图进行翻页,刚开始我使用普通的WM_LBUTTONDOWN和WM_LBUTTONUP消息进行发送,发现只是实现了选择树状图节点,而没有达到实际效果,也就是控制页面跳转,遂怀疑是WM_NCHITTEST的问题,可是加入了WM_NCHITTEST消息,并把截获的消息全部依次发送后,仍无法成功.后来发现在WM_LBUTTONUP消息后,有一个关键的TVM_HITTEST我没有进

用Winform开发了一个程序,界面上的控件在Win7下是基本对齐的,到了WindowsServer2008下就变的完全对不齐了?请问这是什么原因?

问题描述 用Winform开发了一个程序,界面上的控件在Win7下是基本对齐的,到了WindowsServer2008下就变的完全对不齐了?请问这是什么原因?RT 解决方案 解决方案二:不知道你是用什么方法"对齐"的,所以无法判断.比如说你用"空格"来搞什么"对齐",那么不同系统的同一个主题下的细节设置也是有调整的,空格在高版本的windows下肯定就变宽了一些,那么自然在高版本windows下就"鼓出去"了.你用于"

图片-安卓 带阴影的折线图控件 如何绘制阴影

问题描述 安卓 带阴影的折线图控件 如何绘制阴影 如图 这种折线下带有阴影的控件,阴影是怎么绘制上去的 解决方案 自问自答............... 我觉得可以先用一个渐变色把背景填充了 然后再画一个不规则的图 里面填充上白色 然后再画其他的线 解决方案二: 使用线性渐变 用Path绘制不过则的图形,然后把线性渐变设置给画笔,这样就实现了上述效果 解决方案三: 你好,你的这个折线demo能给我看看吗? 解决方案四: 你好,你的这个折线demo能给我看看吗? 解决方案五: 好的,我最近整理一下

Android自定义控件实现简单的轮播图控件_Android

最近要做一个轮播图的效果,网上看了几篇文章,基本上都能找到实现,效果还挺不错,但是在写的时候感觉每次都要单独去重新在Activity里写一堆代码.于是自己封装了一下.本篇轮播图实现原理原文出处:循环广告位组件的实现,这里只是做了下封装成一个控件,不必每次重复写代码了. 效果图: 实现分析 轮播图的功能就是实现左右滑动的广告.图片信息展示,那我们就用ViewPager来实现,由于考虑到用户体验,我们还需要在下面加一个指示器来标示滑动到了第几张轮播图.指示器我们可以用一个线性布局来根据要展示的轮播图

Android自定义控件实现简单的轮播图控件

最近要做一个轮播图的效果,网上看了几篇文章,基本上都能找到实现,效果还挺不错,但是在写的时候感觉每次都要单独去重新在Activity里写一堆代码.于是自己封装了一下.本篇轮播图实现原理原文出处:循环广告位组件的实现,这里只是做了下封装成一个控件,不必每次重复写代码了. 效果图: 实现分析 轮播图的功能就是实现左右滑动的广告.图片信息展示,那我们就用ViewPager来实现,由于考虑到用户体验,我们还需要在下面加一个指示器来标示滑动到了第几张轮播图.指示器我们可以用一个线性布局来根据要展示的轮播图