使用Visio 2003 Drawing Control开发应用(1) 【转】
2010-03-17 10:58
477 查看
不熟悉Visio的人应该先看看visio究竟是个什么东西,visio这个东西还是很不错的软件。
在安装完Visio之后,就可以使用这个control了,在vs.net环境中,在工具箱上添加Microsoft Visio 11.0 Drawing Control的COM 组件,然后就可以往Form中拖了。(这个时候引用中会自动多了AxVisOcx, VisOcx 和Visio的引用)
这里要使用到两个namespace
using Visio=Microsoft.Office.Interop.Visio; // 这个namespace中是所有Visio对象模型的对象
using AxVisOcx = AxMicrosoft.Office.Interop.VisOcx; // 这个namespace中有该控件的对象
对于这个control,有几个很重要的属性需要知道
Src: 这个属性用来打开或者关闭当前文档,关闭当前文档直接设置Src=""就可以了,打开时,设置Src等于打开文件的路径(绝对路径)。
NegotiateMenus和NegotiateToolbars是用来显示visio自己的菜单和工具栏的,对于WinForm程序来说是无法显示的,原因是因为Window Form程序不支持OLE菜单合并的功能。而且,这个两个属性必须设置成一致的。
HostID:是为了分辨不同visio host的一个属性,一般来说,在这里放置一个GUID,这样,你的应用对Visio一些配置就不会影响到Visio本身或者其他Visio的应用了。要做这样的配置,需要在注册表项HKEY_CURRENT_USER Software Microsoft Office 11.0 VisioHosts加上这个GUID
接着,要了解Visio的对象模型,这个看msdn中就有这个object model,还有详细的说明。这里需要至少用到的一些对象包括
private Visio.Application visApplication = null; // 当前Visio Control的Application对象
private Visio.Page visPage = null; // 当前Visio Control的Page对象
private Visio.Document visDocument = null; // 当前 Visio Control的Document对象
private Visio.Documents visDocuments = null; // 当前Visio Control的Documents对象
private Visio.Window visWindow = null; // 当前Visio Control的Window对象
private Visio.Shape visClickedShape = null; // 当前Visio Control点击的Shape对象
这些对象需要设置,如果打开的文档发生了变化,需要更新,最好有这样的函数
private void SetVisioVariables()
{
visApplication = (Visio.Application)visDrawing.Window.Application;
visPage = (Visio.Page)visDrawing.Document.Pages[1];
visWindow = (Visio.Window)visDrawing.Window;
visDocument = (Visio.Document)visDrawing.Document;
visDocuments = (Visio.Documents)visDrawing.Window.Application.Documents;
}
这里设置visPage直接等于isDrawing.Document.Pages[1]是因为我这里使用的单页模式,所以直接设置。(注意:Visio里面的collection的内容是从1开始的,不是0)
还有一些属性可以控制,比如:
visWindow.ShowPageTabs = false; // 不让显示页的标签
visWindow.Zoom = 1.00; // 设置缩放比例为100%
visDocument.GestureFormatSheet.get_CellsSRC((short)Visio.VisSectionIndices.visSectionCharacter, 0,
(short)Visio.VisCellIndices.visCharacterSize).FormulaU = "9 pt"; // 设置字体为9号字,这个是高级用法了,我会在后面讲解
还能控制是否显示网格,标尺等等
接下来,就可以使用了
打开文件:比如visDrawing.Src = "c: Blank.vtx"; 这样就可以打开一个文件,这里是一个xml的模板文件。如果是模板,那么一般来说是带stencil的,stencil就是形状模具,visio 2003带有形状搜索的功能,如果你不想让搜索出现,
Visio.Windows wnds = visApplication.Windows;
for(short i = 1; i <= wnds.Count; i++)
wnds[i].Windows.get_ItemFromID((int)Visio.VisWinTypes.visWinIDShapeSearch).Visible = false;
打开后,记着设置对象: this.SetVisioVariables();
如果想更改打开的文件,可以设置Src="";然后设置Src等于要打开的文件。但是,有时你想添一个模具窗口进来,这时候可以使用Open或OpenEx方法:
this.visDocuments.OpenEx("c: MainStencil.vsx", (short)Visio.VisOpenSaveArgs.visOpenDocked + (short)Visio.VisOpenSaveArgs.visOpenRO);
这样就加了一个模具窗口进来,同时设置了让这个窗口dock而且是只读打开。
保存时,使用Save或SaveAs就可以(Save只能存成vsd文件,要保存其他格式需要使用SaveAs方法)
visDocument.SaveAs("e: temp.vdx");
下一节,介绍对于各种事件的处理。
在安装完Visio之后,就可以使用这个control了,在vs.net环境中,在工具箱上添加Microsoft Visio 11.0 Drawing Control的COM 组件,然后就可以往Form中拖了。(这个时候引用中会自动多了AxVisOcx, VisOcx 和Visio的引用)
这里要使用到两个namespace
using Visio=Microsoft.Office.Interop.Visio; // 这个namespace中是所有Visio对象模型的对象
using AxVisOcx = AxMicrosoft.Office.Interop.VisOcx; // 这个namespace中有该控件的对象
对于这个control,有几个很重要的属性需要知道
Src: 这个属性用来打开或者关闭当前文档,关闭当前文档直接设置Src=""就可以了,打开时,设置Src等于打开文件的路径(绝对路径)。
NegotiateMenus和NegotiateToolbars是用来显示visio自己的菜单和工具栏的,对于WinForm程序来说是无法显示的,原因是因为Window Form程序不支持OLE菜单合并的功能。而且,这个两个属性必须设置成一致的。
HostID:是为了分辨不同visio host的一个属性,一般来说,在这里放置一个GUID,这样,你的应用对Visio一些配置就不会影响到Visio本身或者其他Visio的应用了。要做这样的配置,需要在注册表项HKEY_CURRENT_USER Software Microsoft Office 11.0 VisioHosts加上这个GUID
接着,要了解Visio的对象模型,这个看msdn中就有这个object model,还有详细的说明。这里需要至少用到的一些对象包括
private Visio.Application visApplication = null; // 当前Visio Control的Application对象
private Visio.Page visPage = null; // 当前Visio Control的Page对象
private Visio.Document visDocument = null; // 当前 Visio Control的Document对象
private Visio.Documents visDocuments = null; // 当前Visio Control的Documents对象
private Visio.Window visWindow = null; // 当前Visio Control的Window对象
private Visio.Shape visClickedShape = null; // 当前Visio Control点击的Shape对象
这些对象需要设置,如果打开的文档发生了变化,需要更新,最好有这样的函数
private void SetVisioVariables()
{
visApplication = (Visio.Application)visDrawing.Window.Application;
visPage = (Visio.Page)visDrawing.Document.Pages[1];
visWindow = (Visio.Window)visDrawing.Window;
visDocument = (Visio.Document)visDrawing.Document;
visDocuments = (Visio.Documents)visDrawing.Window.Application.Documents;
}
这里设置visPage直接等于isDrawing.Document.Pages[1]是因为我这里使用的单页模式,所以直接设置。(注意:Visio里面的collection的内容是从1开始的,不是0)
还有一些属性可以控制,比如:
visWindow.ShowPageTabs = false; // 不让显示页的标签
visWindow.Zoom = 1.00; // 设置缩放比例为100%
visDocument.GestureFormatSheet.get_CellsSRC((short)Visio.VisSectionIndices.visSectionCharacter, 0,
(short)Visio.VisCellIndices.visCharacterSize).FormulaU = "9 pt"; // 设置字体为9号字,这个是高级用法了,我会在后面讲解
还能控制是否显示网格,标尺等等
接下来,就可以使用了
打开文件:比如visDrawing.Src = "c: Blank.vtx"; 这样就可以打开一个文件,这里是一个xml的模板文件。如果是模板,那么一般来说是带stencil的,stencil就是形状模具,visio 2003带有形状搜索的功能,如果你不想让搜索出现,
Visio.Windows wnds = visApplication.Windows;
for(short i = 1; i <= wnds.Count; i++)
wnds[i].Windows.get_ItemFromID((int)Visio.VisWinTypes.visWinIDShapeSearch).Visible = false;
打开后,记着设置对象: this.SetVisioVariables();
如果想更改打开的文件,可以设置Src="";然后设置Src等于要打开的文件。但是,有时你想添一个模具窗口进来,这时候可以使用Open或OpenEx方法:
this.visDocuments.OpenEx("c: MainStencil.vsx", (short)Visio.VisOpenSaveArgs.visOpenDocked + (short)Visio.VisOpenSaveArgs.visOpenRO);
这样就加了一个模具窗口进来,同时设置了让这个窗口dock而且是只读打开。
保存时,使用Save或SaveAs就可以(Save只能存成vsd文件,要保存其他格式需要使用SaveAs方法)
visDocument.SaveAs("e: temp.vdx");
下一节,介绍对于各种事件的处理。
相关文章推荐
- 使用Visio 2003 Drawing Control开发应用(2) 【转】
- 使用Visio 2003 Drawing Control开发应用(3)(4)
- 使用Visio 2003 Drawing Control开发应用(2)
- 使用Visio 2003 Drawing Control开发应用(1)
- 使用Visio 2003 Drawing Control开发应用(4) 【转】
- 使用Visio 2003 Drawing Control开发应用(3)
- 使用Visio 2003 Drawing Control开发应用(1)
- 使用Visio 2003 Drawing Control开发应用(2)
- 使用Visio 2003 Drawing Control开发应用(4)
- 使用Visio 2003 Drawing Control开发应用(补1) 【转】
- 使用Visio 2003 Drawing Control开发应用(5)
- 利用Visio 2003 Drawing Control的C#应用开发系列
- 使用Visio DrawingControl的应用开发(补)
- 使用Xamarin.Forms平台开发移动应用指南
- 十分钟使用ionic Framework开发一个跨平台移动应用
- 【Android 应用开发】 Application 使用分析
- 浅析HTML5在移动应用开发中的使用
- MultiRow发现之旅(四)- 使用MultiRow开发WinForm应用(附源码)
- 如何使用腾讯云快速开发一款 AR 应用
- MultiRow发现之旅(四)- 使用MultiRow开发WinForm应用(附源码)