zoukankan      html  css  js  c++  java
  • 发布一个用于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位于压缩包内,项目中也附带了两个从实际系统中导出的图形文件。

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

             

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

                 

              范例代码:

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

               GisCtlDemo.rar 

  • 相关阅读:
    做个商城吧在(一)前端架构概要
    我的前端工具集(二)文件上传的封装
    一点一点看JDK源码(六)java.util.LinkedList前篇之链表概要
    [Architect] Abp 框架原理解析(4) Validation
    [Architect] Abp 框架原理解析(3) DynamicFilters
    [Architect] Abp 框架原理解析(2) EventBus
    [Architect] Abp 框架原理解析(1) Module
    [Solution] AOP原理解析及Castle、Autofac、Unity框架使用
    [Solution] DI原理解析及Castle、Unity框架使用
    [Architect] ABP(现代ASP.NET样板开发框架) 翻译
  • 原文地址:https://www.cnblogs.com/hoodlum1980/p/1262524.html
Copyright © 2011-2022 走看看