天天看点

NShape(开源矢量图形编辑器) 入门(一)NShape(矢量图形编辑器) 入门(一)

NShape(矢量图形编辑器) 入门(一)

  NShape是基于.Net平台下的一款开源的winforms图表设计框架,使用C#编写。NShape允许用户查看、注释,修改和创建流程图、接线图或项目图等图表。Nshape有一个双重许可证,允许它在开源项目中免费使用,在商业项目中则需要支付许可证费用。

软件获取

  1. CodePlex网站
  2. GitHub

安装

1.解压文件后,进入安装目录下

Source

文件夹,打开

NShape.sln

工程文件,编译工程文件。

2.新建一个文件夹,将编译文件后获得的dll文件存放于此。

3.启动Visual Studio,将

Dataweb.NShape.dll

Dataweb.NShape.WinFormsUI.dll

添加到工具箱,添加dll控件教程见:Visual Studio 添加dll控件。

创建一个NShape桌面应用程序

1.新建一个Visual C# Window 窗体应用程序,命名为

BaseNShapeApplication

  ! NShape项目要求使用完整的 .Net Framework 版本,如果项目是使用 .Net Framework Client 版本,请切换成完整版。

2.添加如下引用:

Dataweb.NShape.dll

Dataweb.NShape.WinFormsUI.dll

Dataweb.NShape.GeneralShapes

3.在winForm窗口内添加

MenuStrip

控件,于控件内添加文件打开子集。

NShape(开源矢量图形编辑器) 入门(一)NShape(矢量图形编辑器) 入门(一)

4.继续往窗体内添加以下控件:

Display

Project

DiagramSetController

CachedRepository

XmlStore

控件,设置

Display

控件

Dock

属性为为

Fill

,随后按照以下顺序对控件进行关联绑定操作:

5.双击窗体标题栏进入

Form1_Load

方法,添加代码:

private void Form1_Load(object sender, EventArgs e)
{
	project1.LibrarySearchPaths.Add(Application.StartupPath);
	project1.AutoLoadLibraries = true;
	
	/* NShape保存格式文件".nspj"会存储GeneralShapes控件标识,版本信息.
	 * 因此如果不进行注册的话,会无法打开不同版本时期创建的文件。
	 * 其中NShape Demo文件大部分均为1.0.0.0 - 2.0.0.0时期文件,因此建议提前注册。*/
	project1.AddLibrary(typeof(Ellipse).Assembly, false);
	project1.AutoGenerateTemplates = true;
	
	//在新建project1对象时,必须为其添加名称,默认project对象不会生成名称,但却需要名称。
	project1.Name = "New Templet";
	project1.Create();
	display1.CreateDiagram("Diagram 1");
}
           

  完成后运行程序会得到以下界面:

NShape(开源矢量图形编辑器) 入门(一)NShape(矢量图形编辑器) 入门(一)

6.双击菜单栏下

打开

选项,进入

打开ToolStripMenuItem_Click

方法,添加代码:

private void 打开ToolStripMenuItem_Click(object sender, EventArgs e)
{
	OpenFileDialog openfileDialog = new OpenFileDialog();
	openfileDialog.Filter = "*.nspj|*.nspj";
	if (openfileDialog.ShowDialog() == DialogResult.OK)
	{
		//在打开新文件前需要先关闭原先打开的对象
	    if(project1.IsOpen)
	    {
	        project1.Close();
	    }
	    
	    FileInfo fileInfo = new FileInfo(openfileDialog.FileName);
	    xmlStore1.DirectoryName = fileInfo.DirectoryName;
	    xmlStore1.FileExtension = fileInfo.Extension.TrimStart('.');
	    project1.Name = fileInfo.Name.Replace(fileInfo.Extension, "");
	    project1.Open();
	    
	    //NShape程序允许存在多个Diagrams对象,但只能显示其中一个。本Demo默认显示第一个对象。
	    var diagrams = project1.Repository.GetDiagrams();
	    foreach (var item in diagrams)
	    {
	        display1.Diagram = item;
	        break;
	    }
	}
}
           

  完成后运行程序可以得到以下界面:

NShape(开源矢量图形编辑器) 入门(一)NShape(矢量图形编辑器) 入门(一)