首页 > Windows开发 > 详细

用c#操作visio画图

时间:2015-03-19 18:00:52      阅读:494      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!