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

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

       发布一个在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 

目录
相关文章
|
26天前
|
计算机视觉 C++
基于Qt的简易图片浏览器设计与实现
基于Qt的简易图片浏览器设计与实现
25 1
|
Windows UED API
[UWP]如何实现UWP平台最佳图片裁剪控件
原文:[UWP]如何实现UWP平台最佳图片裁剪控件 前几天我写了一个UWP图片裁剪控件ImageCropper(开源地址),自认为算是现阶段UWP社区里最好用的图片裁剪控件了,今天就来分享下我编码的过程。
1121 0
win10 uwp 毛玻璃
原文:win10 uwp 毛玻璃 版权声明:博客已迁移到 http://lindexi.gitee.io 欢迎访问。如果当前博客图片看不到,请到 http://lindexi.gitee.io 访问博客。
1038 0
|
Android开发 iOS开发 UED
[UWP]浅谈按钮设计
原文:[UWP]浅谈按钮设计 一时兴起想谈谈UWP按钮的设计。 按钮是UI中最重要的元素之一,可能也是用得最多的交互元素。好的按钮设计可以有效提高用户体验,构造让人眼前一亮的UI。而且按钮通常不会影响布局,小小的按钮无论怎么改也不会对性能有多大影响,所以不少注重细节的设计师最为热衷修改按钮。
1456 0
|
C#
WPF中桌面屏保的制作(主要代码)
原文:WPF中桌面屏保的制作(主要代码) 制作要点:(1) 使用System.Windows.Threading.DispatcherTimer;(2) 将Window属性设置为:      this.WindowState = WindowState.Maximized;      this.WindowStyle = WindowStyle.None;      this.ResizeMode = ResizeMode.NoResize;(3) 按ESC键时,关闭窗口。
808 0
|
C#
WPF 控件库——仿制Windows10的进度条
原文:WPF 控件库——仿制Windows10的进度条 一、其实有现成的   先来看看Windows10进度条的两种模式:       网上有不少介绍仿制Windows10进度条的文章,也都实现了不错的效果。
1323 0
|
Go
UWP 拖拽文件
原文:UWP 拖拽文件 桌面环境下的UWP,加入拖拽模式还是会增加用户好感度的。 好了,先看一下我最新研发的【小微识花】吧,演示一下       炫酷,有没有, 而且这识别速度,也是杠杠的~~~    关于拖拽的实现,一般有两个方法。
945 0