Following is the sample code i am using to generate the diagram #################################################
Public Class Type Public Const CHECKLIST As String = "CHECKLIST" Public Const PROCESS As String = "PROCESS" Public Const START As String = "START" Public Const [END] As String = "END" Public Const [STEP] As String = "STEP" End Class
Private Function GetBrush(ByVal sShapeType As String) As MindFusion.Drawing.Brush Dim myBrush As MindFusion.Drawing.Brush Select Case sShapeType Case Type.CHECKLIST myBrush = New MindFusion.Drawing.SolidBrush(Color.FromArgb(255, 170, 42)) Case Type.PROCESS myBrush = New MindFusion.Drawing.SolidBrush(Color.FromArgb(102, 204, 255)) Case Type.START, Type.END myBrush = New MindFusion.Drawing.SolidBrush(Color.FromArgb(158, 183, 211)) Case Type.STEP myBrush = New MindFusion.Drawing.SolidBrush(Color.FromArgb(178, 195, 70)) Case Else myBrush = New MindFusion.Drawing.SolidBrush(Color.Red) End Select Return myBrush End Function
Private Function GetDiagramLink(ByVal DG As Diagram, ByVal parentNode As DiagramNode, ByVal childNode As DiagramNode) As DiagramLink Dim myLink As New DiagramLink(DG, parentNode, childNode)
myLink.HeadShape = ArrowHead.BowArrow myLink.Pen = New MindFusion.Drawing.Pen(Color.SteelBlue, 0.2) myLink.Brush = New MindFusion.Drawing.SolidBrush(Color.SteelBlue) myLink.Dynamic = True myLink.ShadowOffsetX = 0 myLink.ShadowOffsetY = 0 myLink.Locked = False
Return myLink End Function
Public Sub DrawFlowChart()
dgv.ImageFormat = "image/jpeg" dgv.ImageQuality = 75 dgv.MaxImageSize = New Size(1000, 1000) dgv.Behavior = Diagramming.Behavior.DoNothing dgv.BorderWidth = 0.2 dgv.BorderStyle = BorderStyle.Solid dgv.BorderColor = Color.Gray
Dim DG As Diagram = dgv.Diagram If DG Is Nothing Then Exit Sub
DG.ClearAll() DG.BackBrush = New MindFusion.Drawing.SolidBrush(Color.White) DG.SelectAfterCreate = False DG.LinkHeadShape = ArrowHead.BowArrow DG.LinkHeadShapeSize = 2
Dim dt As DataTable = GetData()
If dt IsNot Nothing AndAlso dt.Rows.Count > 0 Then dgv.Diagram.DefaultShape = Shapes.Rectangle Dim factory As Factory = dgv.Diagram.Factory
Dim PRVNODE As ShapeNode = Nothing For Each dr As DataRow In dt.Rows Dim newNode As ShapeNode = factory.CreateShapeNode(0, 0, 50, 25) newNode.EnableStyledText = True newNode.Brush = GetBrush(dr("TYPE")) newNode.ShadowOffsetX = 1 newNode.ShadowOffsetY = 1 newNode.ZTop() newNode.Obstacle = True
Select Case dr("type").ToString Case Type.START newNode.Shape = Shapes.Start newNode.Text = "START" newNode.Resize(40, 20) Case Type.END newNode.Shape = Shapes.Terminator newNode.Text = "END" newNode.Resize(40, 20) Case Type.PROCESS newNode.Shape = Shapes.Procedure newNode.Text = "Process" Case Type.STEP newNode.Shape = Shapes.RoundRect newNode.Text = "Step" Case Type.CHECKLIST newNode.Shape = Shapes.BpmnIntermediateRule newNode.Text = "Checklist" End Select DG.Nodes.Add(newNode)
If PRVNODE IsNot Nothing Then Dim nodeLink As DiagramLink = GetDiagramLink(DG, PRVNODE, newNode) DG.Links.Add(nodeLink) End If PRVNODE = newNode Next
Dim flowChart As New MindFusion.Diagramming.Layout.FlowchartLayout flowChart.Arrange(DG) DG.ResizeToFitItems(10) End If End Sub
Protected Sub btnGenerate_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnGenerate.Click DrawFlowChart() End Sub
|