如何使用Nevron Vision for .NET来绘制流程图

作者:控件中国网   出处:控件中国网   2015-09-09 14:51:25   阅读:5

Nevron Vision for .NET是Nevron公司推出的套包产品,其中包含了图表、仪表、流程图、地图控件,这篇文章主要介绍其中的Nevron Diagram for .NET流程图控件,如何快速在WinForm应用中绘制流程图,具体查看下面的完整代码:

using Nevron.GraphicsCore;

using Nevron.Diagram;

using Nevron.Diagram.Shapes;

using Nevron.Diagram.WinForm;

private void Form1_Load(object sender, System.EventArgs e)

{

    // begin view init

    nDrawingView1.BeginInit();

 

    // display the document in the view

    nDrawingView1.Document = nDrawingDocument1;

 

    // do not show ports

    nDrawingView1.GlobalVisibility.ShowPorts = false; 

 

    // hide the grid

    nDrawingView1.Grid.Visible = false; 

 

    // fit the document in the viewport 

    nDrawingView1.ViewLayout = ViewLayout.Fit; 

 

    // apply padding to the document bounds

    nDrawingView1.DocumentPadding = new Nevron.Diagram.NMargins(10);

 

    // init document

    nDrawingDocument1.BeginInit();

 

    // create the flowcharting shapes factory

    NFlowChartingShapesFactory factory = new NFlowChartingShapesFactory(nDrawingDocument1);

 

    // modify the connectors style sheet

    NStyleSheet styleSheet = (nDrawingDocument1.StyleSheets.GetChildByName(NDR.NameConnectorsStyleSheet, -1) as NStyleSheet); 

 

    NTextStyle textStyle = new NTextStyle();

    textStyle.BackplaneStyle.Visible = true;

    textStyle.BackplaneStyle.StandardFrameStyle.InnerBorderWidth = new NLength(0); 

    styleSheet.Style.TextStyle = textStyle;

 

    styleSheet.Style.StrokeStyle = new NStrokeStyle(1, Color.Black);

    styleSheet.Style.StartArrowheadStyle.StrokeStyle = new NStrokeStyle(1, Color.Black);

    styleSheet.Style.EndArrowheadStyle.StrokeStyle = new NStrokeStyle(1, Color.Black);

 

    // create the begin shape 

    NShape begin = factory.CreateShape(FlowChartingShapes.Termination);

    begin.Bounds = new NRectangleF(100, 100, 100, 100);

    begin.Text = "BEGIN";

    nDrawingDocument1.ActiveLayer.AddChild(begin);

 

    // create the step1 shape

    NShape step1 = factory.CreateShape(FlowChartingShapes.Process);

    step1.Bounds = new NRectangleF(100, 400, 100, 100);

    step1.Text = "STEP1";

    nDrawingDocument1.ActiveLayer.AddChild(step1);

 

    // connect begin and step1 with bezier link

    NBezierCurveShape bezier = new NBezierCurveShape();

    bezier.StyleSheetName = NDR.NameConnectorsStyleSheet;

    bezier.Text = "BEZIER";

    bezier.FirstControlPoint = new NPointF(100, 300);

    bezier.SecondControlPoint = new NPointF(200, 300);

    nDrawingDocument1.ActiveLayer.AddChild(bezier);

    bezier.FromShape = begin;

    bezier.ToShape = step1;

        

    // create question1 shape

    NShape question1 = factory.CreateShape(FlowChartingShapes.Decision);

    question1.Bounds = new NRectangleF(300, 400, 100, 100);

    question1.Text = "QUESTION1";

    nDrawingDocument1.ActiveLayer.AddChild(question1);

 

    // connect step1 and question1 with line link

    NLineShape line = new NLineShape();

    line.StyleSheetName = NDR.NameConnectorsStyleSheet;

    line.Text = "LINE";

    nDrawingDocument1.ActiveLayer.AddChild(line);

    line.FromShape = step1;

    line.ToShape = question1;

 

    // create the step2 shape

    NShape step2 = factory.CreateShape(FlowChartingShapes.Process);

    step2.Bounds = new NRectangleF(500, 100, 100, 100);

    step2.Text = "STEP2";

    nDrawingDocument1.ActiveLayer.AddChild(step2);

 

    // connect step2 and question1 with HV link

    NStep2Connector hv1 = new NStep2Connector(false); 

    hv1.StyleSheetName = NDR.NameConnectorsStyleSheet;

    hv1.Text = "HV1";

    nDrawingDocument1.ActiveLayer.AddChild(hv1);

    hv1.FromShape = step2;

    hv1.ToShape = question1;

 

    // connect question1 and step2 and with HV link

    NStep2Connector hv2 = new NStep2Connector(false); 

    hv2.StyleSheetName = NDR.NameConnectorsStyleSheet;

    hv2.Text = "HV2";

    nDrawingDocument1.ActiveLayer.AddChild(hv2);

    hv2.FromShape = question1;

    hv2.ToShape = step2;

 

    // create a self loof as bezier on step2

    NBezierCurveShape selfLoop = new NBezierCurveShape();

    selfLoop.StyleSheetName = NDR.NameConnectorsStyleSheet;

    selfLoop.Text = "SELF LOOP";

    nDrawingDocument1.ActiveLayer.AddChild(selfLoop);

    selfLoop.FromShape = step2;

    selfLoop.ToShape = step2;

    selfLoop.Reflex(); 

 

    // create step3 shape

    NShape step3 = factory.CreateShape(FlowChartingShapes.Process);

    step3.Bounds = new NRectangleF(700, 600, 100, 100);

    step3.Text = "STEP3";

    nDrawingDocument1.ActiveLayer.AddChild(step3);

 

    // connect question1 and step3 with an HVH link

    NStep3Connector hvh1 = new NStep3Connector(false, 50, 0, true); 

    hvh1.StyleSheetName = NDR.NameConnectorsStyleSheet;

    hvh1.Text = "HVH1";

    nDrawingDocument1.ActiveLayer.AddChild(hvh1);

    hvh1.FromShape = question1;

    hvh1.ToShape = step3;

 

    // create end shape

    NShape end = factory.CreateShape(FlowChartingShapes.Termination);

    end.Bounds = new NRectangleF(300, 700, 100, 100);

    end.Text = "END";

    nDrawingDocument1.ActiveLayer.AddChild(end);

 

    // connect step3 and end with VH link

    NStep2Connector vh1 = new NStep2Connector(true); 

    vh1.StyleSheetName = NDR.NameConnectorsStyleSheet;

    vh1.Text = "VH1";

    nDrawingDocument1.ActiveLayer.AddChild(vh1);

    vh1.FromShape = step3;

    vh1.ToShape = end;

 

    // connect question1 and end with curve link (uses explicit ports)

    NRoutableConnector curve = new NRoutableConnector(RoutableConnectorType.DynamicCurve);

    curve.StyleSheetName = NDR.NameConnectorsStyleSheet;

    curve.Text = "CURVE";

    nDrawingDocument1.ActiveLayer.AddChild(curve);

    curve.StartPlug.Connect(question1.Ports.GetChildAt(3) as NPort);

    curve.EndPlug.Connect(end.Ports.GetChildAt(1) as NPort);

    curve.InsertPoint(1, new NPointF(500, 600));

 

    // set a shadow to the nDrawingDocument1. Since styles are inheritable all objects will reuse this shadow

    nDrawingDocument1.Style.ShadowStyle = new NShadowStyle(

        ShadowType.GaussianBlur,

        Color.Gray,

        new NPointL(5, 5),

        1,

        new NLength(3));

 

    // shadows must be displayed behind document content

    nDrawingDocument1.ShadowsZOrder = ShadowsZOrder.BehindDocument; 

 

    // end nDrawingDocument1 init

    nDrawingDocument1.EndInit();

 

    //end view init

    nDrawingView1.EndInit();

}

运行效果图如下:

GettingStartedSample.png

Copyright© 2006-2015 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 渝ICP备12000264号 法律顾问:元炳律师事务所
客服软件
live chat