c# visio 绘图

开发平台vs,开发语言c#,我想操纵visio绘制图形,图形基本由直线、箭头、虚线和文本组成,所以现在的问题是如何写代码能够在visio中绘制直线等基本图形和写文本。
我现在能够打开visio了,网上查了一些资料,没有太明白,请教大神指点一下,如何能绘制直线、箭头等基本形状并写文本,谢谢!
我要绘制的图形基本如下所示:

第1个回答  2015-05-13
要想通过.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";
}
}
}

我给你画了几个简单的图形.
请根据上面的内容去做您自己的功能吧本回答被网友采纳