使用Visio 2003 Drawing Control开发应用(1) 【转】
来源:互联网 发布:叮叮软件官方客服 编辑:程序博客网 时间:2024/05/06 10:23
不熟悉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 2003 Drawing Control开发应用(1) 【转】
- 使用Visio 2003 Drawing Control开发应用(2) 【转】
- 使用Visio 2003 Drawing Control开发应用(3) 【转】
- 使用Visio 2003 Drawing Control开发应用(4) 【转】
- 使用Visio 2003 Drawing Control开发应用(补1) 【转】
- Visio 2003 开发入门
- Visio 2003 开发入门
- visio 2003开发SDK
- Visio 2003 开发入门
- 使用Visio开发自定义图形
- 使用Visio画各种应用图
- Programming with the Microsoft Office Visio 2003 ActiveX Control
- MFC (1)CAnimate Control 应用
- Use X++ to control word drawing Chart
- Flicker free drawing of any control
- Visio 2003 ShapeStudio 形状开发入门
- 【VISIO】visio画图使用技巧
- 使用Drawing 类绘图
- HLSL固有函数 【Intrinsic Functions (DirectX HLSL)】
- C#返返回多种类型的数据
- C#中的方法的使用
- linux下C语言多线程编程实例
- js 动态添加删除Table块
- 使用Visio 2003 Drawing Control开发应用(1) 【转】
- QT实例:从QListWidget中删除选中的QListWidgetItem
- GLSL最简单的范例
- 利用Socket传输文件时,接收方判断文件末尾的方法
- Oracle权限集合
- c#之 简单stmp/pop邮件服务(一)-------发送邮件
- 找零钱问题
- linux vi 命令大全
- D3DAPI大全,全部函数