要想通过.net画visio图,要先将visio的com组件导入,就是在引用中添加visio的com组件,导入玩之后就可以写代码画图了。贴个简单的示例代码,便于大家理解:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using Visio = Microsoft.Office.Interop.Visio; using AxVisOcx = AxMicrosoft.Office.Interop.VisOcx; //using System.Web.UI.WebControls; using Cell = Microsoft.Office.Interop.Visio.Cell; namespace visiotest1 { public partial class Form2 : Form { public Form2() { InitializeComponent(); } private static void ConnectShapes(Visio.Shape shape1, Visio.Shape shape2, Visio.Shape connector) { // get the cell from the source side of the connector Cell beginXCell = connector.get_CellsSRC( (short)Visio.VisSectionIndices.visSectionObject, (short)Visio.VisRowIndices.visRowXForm1D, (short)Visio.VisCellIndices.vis1DBeginX); // glue the source side of the connector to the first shape beginXCell.GlueTo(shape1.get_CellsSRC( (short)Visio.VisSectionIndices.visSectionObject, (short)Visio.VisRowIndices.visRowXFormOut, (short)Visio.VisCellIndices.visXFormPinX)); // get the cell from the destination side of the connector Cell endXCell = connector.get_CellsSRC( (short)Visio.VisSectionIndices.visSectionObject, (short)Visio.VisRowIndices.visRowXForm1D, (short)Visio.VisCellIndices.vis1DEndX); // glue the destination side of the connector to the second shape endXCell.GlueTo(shape2.get_CellsSRC( (short)Visio.VisSectionIndices.visSectionObject, (short)Visio.VisRowIndices.visRowXFormOut, (short)Visio.VisCellIndices.visXFormPinX)); } private void Form2_Load(object sender, EventArgs e) { axDrawingControl1.Window.Zoom = 0.5; axDrawingControl1.Window.ShowScrollBars = (short)Visio.VisScrollbarStates.visScrollBarBoth; axDrawingControl1.Window.ShowRulers = 0; axDrawingControl1.Window.BackgroundColor = (uint)ColorTranslator.ToOle(Color.Red); axDrawingControl1.Window.BackgroundColorGradient = (uint)ColorTranslator.ToOle(Color.Red); axDrawingControl1.Window.ZoomBehavior = Visio.VisZoomBehavior.visZoomVisioExact; Visio.Page currentPage = axDrawingControl1.Document.Pages[1]; Visio.Document currentStencil = axDrawingControl1.Document.Application.Documents.OpenEx("Basic_M.vss", (short)Visio.VisOpenSaveArgs.visOpenDocked); Visio.Shape shape1 = currentPage.Drop(currentStencil.Masters["三角形"], 1.50, 1.50); Visio.Shape shape2 = currentPage.Drop(currentStencil.Masters["正方形"], 2.50, 3.50); Visio.Shape connector = currentPage.Drop(currentStencil.Masters["动态连接线"], 4.50, 4.50); ConnectShapes(shape1, shape2, connector); Cell arrowCell = connector.get_CellsSRC((short)Visio.VisSectionIndices.visSectionObject, (short)Visio.VisRowIndices.visRowLine, (short)Visio.VisCellIndices.visLineEndArrow); arrowCell.FormulaU = "5"; connector.get_Cells("EndArrow").Formula = "=5"; } } }
时间: 2024-10-31 18:54:42