码迷,mamicode.com
首页 > Windows程序 > 详细

用c#操作visio画图

时间:2015-03-19 18:02:31      阅读:302      评论:0      收藏:0      [点我收藏+]

标签:

要想通过.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";

        }
    }
}

  

用c#操作visio画图

标签:

原文地址:http://www.cnblogs.com/kokomo/p/4350975.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!