在入门篇章简单介绍了如何使用NShape搭建一个简单的Demo。本章将会简单介绍NShape主要控件,以及如何使用NShape搭建满足特定需求的功能模块。

文章目录

  • NShape主要控件
    • 1. Core Components(核心组件)
    • 2. Control(控件)
    • 3. Presenter (表示器)
    • 4. Controllers(控制器)

NShape主要控件

1. Core Components(核心组件)

Project(工程)
  Project 是NShape应用程序的不可缺少的核心组件。它涵盖了对 Store 对象、Diagram 对象、历史记录、安全性、设计和加载的类库的引用。

CachedRepository(缓存库)
  CachedRepository用于关联,管理 DiagramModelTemplate 等对象的默认存储库。每个项目还需要一个存储库。为了持久存储项目,必须将存储组件(XmlStoreSqlStore)附加到存储库。

SqlStore (SQL存储)
  SqlStore 允许将NShape项目存储在MS SQL Server数据库中,使应用程序直接操纵 MS SQL Server 中的数据。

XmlStore(Xml存储)
   XmlStore 允许将NShape项目存储在XML文件中。与 ADO.NET Repository 相比,它将整个对象模型保存在内存中,因此能够在任何时候交付模型的完整映像。XML存储由一个XML文件和一个图像目录“ Images”组成(这取决于ImageLocation属性的值),其中存储了存储图像的目录。
   如果存储库已经存在,那么在保存存储库之前,现有的文件(及其对应的目录)将被重命名为*.bak。

2. Control(控件)

Display(幕布)
  Display 是NShape应用程序的核心组件之一,它包含了对 Diagram 对象的视图显示与管理。

LayerEditor(图层编辑器)
  LayerEditor 提供对图层的编辑管理操作。

LayerListView(图层集列表视图)
  LayerListView 提供了图层集的列表视图功能。

3. Presenter (表示器)

DesignPresenter(设计表示器)
  DesignPresenter 提供了编辑样式和设计所需的所有功能。

ModelTreeViewPresenter(模型树表示器)
  ModelTreeViewPresenter 用于关联 TreeView 控件与 ModelController。实现使用树形列表管理模型对象。

LayerPresenter(图层表示器)
  LayerPresenter 提供用于UI组件与 LayerController 控制器进行交互的方法。

PropertyPresenter(属性表示器)
  PropertyPresenter 用于编辑 ShapeDiagramModel 对象的属性。PropertyPresenter 可以链接一个或两个 System.Windows.Forms.PropertyGrid 对象到 PropertyController,从而实现对 ShapeDiagramModel 对象属性的可视化编辑。

TemplatePresenter(模板表示器)
  TemplatePresenter 提供创建和编辑 Template 的方法。

ToolSetListViewPresenter(ListView表示器)
  ToolSetListViewPresenter 用于关联 ListView 控件与 ToolSetController 对象,以显示和编辑 Diagram 对象。

ToolSetToolStripPresenter(ToolStrip表示器)
  ToolSetToolStripPresenter 用于关联 ToolStrip 控件与 ToolSetController 对象,以显示和编辑Diagram 对象。

4. Controllers(控制器)

DesignController(设计控制器)
  DesignController 提供编辑设计和样式的方法。

DiagramSetController(图表管理控制器)
  DiagramSetController 提供管理和编辑Diagram的方法。每个 Display 对象必须连接 DiagramSetController 对象。

LayerController(图层控制器)
  LayerController 提供管理和编辑 Layer 的方法。

ModelController(模型控制器)
  ModelController 提供用于管理和编辑 Model 的方法。

PropertyController(属性控制器)
  PropertyController 提供用于编辑 ShapeModelDiagram 属性的方法。

TemplateController(模板控制器)
  TemplateController 提供创建和编辑 Template 的方法。

ToolSetController(工具管理控制器)
  ToolSetController 提供用于管理 Diagram 对象创建和操作相关工具的方法。

NShape(开源矢量图形编辑器) 基本功能开发(一)相关推荐

  1. linux矢量图像编辑,Inkscape 1.0发布,开源矢量图形编辑器重要版本

    Inkscape 1.0终于来了! 这个已经存在了将近二十年的开源矢量图形编辑器终于达到了1.0状态. 除版本号外,Inkscape 1.0是一个重要版本. Inkscape 1.0标志着从GTK2移 ...

  2. linux矢量图像编辑,Inkscape - 开源矢量图形编辑器

    Inkscape是一款开源矢量图形编辑工具,并不同于Xara X.Corel Draw和Adobe Illustrator等竞争对手,它使用的是可缩放矢量图形(SVG)图形格式.SVG是一个广泛部署. ...

  3. 微软免费的开源代码编辑器Visual Studio Code 1.17新增多项功能

    微软在2017年9月发布的免费开源代码编辑器Visual Studio Code(v1.17)进行了一些重要的更新.支持将区域标记带入代码折叠,并提升内置终端的性能. 通过代码折叠,开发人员可以使用行 ...

  4. 【开源】高颜值 功能强大的开源Markdown编辑器

    开源最前线(ID:OpenSourceTop) 猿妹编译 地址:https://github.com/notable/notable Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简 ...

  5. H7-TOOL多功能开发工具/开源/烧录器/示波器/仿真器/逻辑分析仪

    H7-TOOL的最终目标: 1.为单片机工程师提供一款实用的多功能开发调试工具. 2.相信很多人有带板子回家调试.或带板子出差调试的情况.因为产品问题是无法预知的,多半情况不可能带齐全套测试工具的.经 ...

  6. unity2d游戏开发系列教程:二、新建工程并熟悉Unity编辑器常用功能

    目录 unity2d游戏开发系列教程:一.环境安装 第一步.打开项目 耐心等待一小会 工程界面 第二步.创建第一个场景(第一关)进行试玩 点击图中标号1的运行按钮,即可简单试玩感受,操作如下 移动A, ...

  7. 最新开源微信小程序一键开发平台源码 支持15大功能模块+完整前后端+搭建教程

    分享一个开源微信小程序一键开发综合平台源码,系统支持15大小程序功能模块,涉及各行各业,含完整前后端+详细搭建部署教程. 系统特色功能一览: 1.全新重构升级功能后端文件和前端文件: 2.整套源码已经 ...

  8. Excel催化剂开源第23波-VSTO开发辅助录入功能关键技术

    Excel催化剂开源第23波-VSTO开发辅助录入功能关键技术 Excel催化剂 2019.01.12 14:10* 字数 2948 阅读 41评论 0喜欢 0 编辑文章 在Excel催化剂的几大辅助 ...

  9. sql优化ppt_一款跨平台免费的开源 SQL 编辑器和数据库管理器!

    大家好,我是 JackTian. 今天给大家推荐一款适用于Windows,Linux和Mac的跨平台免费的开源SQL编辑器和数据库管理应用程序 -- beekeeper-studio. Beekeep ...

  10. python怎么打开编辑器-python用什么编辑器进行项目开发

    工欲善其事必先利其器,估计大部分的pythoner都是从python IDE开始了python之路.有很多的python IDE工具可以用,但是要从中选出一个用着趁手的IDE却是一项艰巨的任务. 你可 ...

最新文章

  1. 作者为何要写《简约之美》这本书?程序员们又能从中学到什么呢?
  2. 几道 BAT 算法面试中经常问的「字符串」问题
  3. clustalw序列比对_如何做出漂亮的序列比对图——ENDscript/ESPript
  4. Silverlight实用窍门系列:54.详解Silverlight中的矩阵变换MatrixTransform,实现其余各种变换【附带实例源码】...
  5. 常用公有云接入——亚马逊
  6. python打印字符金字塔_Python教程第7篇:print打印字符串
  7. 动态数据源切换--AbstractRoutingDataSource
  8. 经典排序算法(三)--插入排序Insertion Sort
  9. 计算机无法读取手机内存,手机sd卡无法读取,教您解决手机sd卡无法读取的方法...
  10. 整数拼接(记忆化更新)
  11. Linux的自动装机服务器搭建(持续优化)
  12. Mysql优化-02
  13. js 生成20内加减法(大概率是用于验证码)
  14. 以太坊ETH(windows)配置
  15. DNS中的A记录和CNAME记录的区别
  16. mongodb 聚合函数求平均值及时差处理
  17. MATLAB的符号运算基础
  18. “华为”和“荣耀”的区别,双品牌满足我和爸妈的不同需求
  19. iOS之常用第三方库的介绍
  20. 100度享乐电商网 jQuery

热门文章

  1. Windows10下电脑版微信未读消息自动弹窗工具
  2. CSUOJ 1256 天朝的单行道(最短路)
  3. 解决tensorflow下载速度慢
  4. 个人管理 - 如何演讲
  5. Git Bash复制粘贴快捷键失效问题
  6. vue drag函数拖拽效果实现
  7. 廊坊金彩教育:怎么优化标题
  8. Python添加或去掉百分号
  9. 计算机专业实训图片,实训一图片的简单处理_计算机软件及应用_IT计算机_专业资料...
  10. 用MicroPython开发ESP32-文件传输工具-ampy