天天看點

繪制控件間的連接配接線

代碼來自 網友 loadres

界面預覽:

繪制控件間的連接配接線

程式源碼:

繪制控件間的連接配接線

Imports  System.Drawing

繪制控件間的連接配接線

Imports  System.Drawing.Drawing2D

繪制控件間的連接配接線
繪制控件間的連接配接線
繪制控件間的連接配接線

Public   Class Form1 Class Form1

繪制控件間的連接配接線
繪制控件間的連接配接線
繪制控件間的連接配接線

    Public Shared Function CreateGraphicsPathByControls()Function CreateGraphicsPathByControls(ByVal SourceControl As Control, ByVal TargetControl As Control) As Drawing2D.GraphicsPath

繪制控件間的連接配接線

        Dim iGraphicsPath As New Drawing2D.GraphicsPath

繪制控件間的連接配接線
繪制控件間的連接配接線

        Dim iSP As Point

繪制控件間的連接配接線

        Dim iEP As Point

繪制控件間的連接配接線
繪制控件間的連接配接線

        If (TargetControl.Left + TargetControl.Width) < SourceControl.Left Then

繪制控件間的連接配接線

            '左邊

繪制控件間的連接配接線

            If (TargetControl.Top + TargetControl.Height) < SourceControl.Top Then

繪制控件間的連接配接線

                '左上角

繪制控件間的連接配接線

                '|_

繪制控件間的連接配接線

                '

繪制控件間的連接配接線

                iSP.X = SourceControl.Left

繪制控件間的連接配接線

                iSP.Y = SourceControl.Top + SourceControl.Height  4

繪制控件間的連接配接線

                iEP.X = TargetControl.Left + TargetControl.Width * 3  4

繪制控件間的連接配接線

                iEP.Y = TargetControl.Top + TargetControl.Height

繪制控件間的連接配接線
繪制控件間的連接配接線

                iGraphicsPath.AddLine(iSP.X, iSP.Y, iEP.X, iSP.Y)

繪制控件間的連接配接線

                iGraphicsPath.AddLine(iEP.X, iSP.Y, iEP.X, iEP.Y)

繪制控件間的連接配接線
繪制控件間的連接配接線

            ElseIf TargetControl.Top > (SourceControl.Top + SourceControl.Height) Then

繪制控件間的連接配接線

                '左下角

繪制控件間的連接配接線

                ' _

繪制控件間的連接配接線

                '|

繪制控件間的連接配接線
繪制控件間的連接配接線

                iSP.X = SourceControl.Left

繪制控件間的連接配接線

                iSP.Y = SourceControl.Top + SourceControl.Height * 3  4

繪制控件間的連接配接線

                iEP.X = TargetControl.Left + TargetControl.Width * 3  4

繪制控件間的連接配接線

                iEP.Y = TargetControl.Top

繪制控件間的連接配接線
繪制控件間的連接配接線

                iGraphicsPath.AddLine(iSP.X, iSP.Y, iEP.X, iSP.Y)

繪制控件間的連接配接線

                iGraphicsPath.AddLine(iEP.X, iSP.Y, iEP.X, iEP.Y)

繪制控件間的連接配接線

            Else

繪制控件間的連接配接線

                '左邊

繪制控件間的連接配接線

                '_

繪制控件間的連接配接線

                '

繪制控件間的連接配接線

                iSP.X = SourceControl.Left

繪制控件間的連接配接線

                iSP.Y = SourceControl.Top + SourceControl.Height  2

繪制控件間的連接配接線

                iEP.X = TargetControl.Left + TargetControl.Width

繪制控件間的連接配接線

                iEP.Y = TargetControl.Top + TargetControl.Height  2

繪制控件間的連接配接線
繪制控件間的連接配接線

                iGraphicsPath.AddLine(iSP.X, iSP.Y, iEP.X + (iSP.X - iEP.X)  2, iSP.Y)

繪制控件間的連接配接線

                iGraphicsPath.AddLine(iEP.X + (iSP.X - iEP.X)  2, iEP.Y, iEP.X, iEP.Y)

繪制控件間的連接配接線

            End If

繪制控件間的連接配接線

        ElseIf TargetControl.Left > (SourceControl.Left + TargetControl.Width) Then

繪制控件間的連接配接線

            '右邊

繪制控件間的連接配接線

            If (TargetControl.Top + TargetControl.Height) < SourceControl.Top Then

繪制控件間的連接配接線

                '右上角

繪制控件間的連接配接線

                '_|

繪制控件間的連接配接線

                '

繪制控件間的連接配接線

                iSP.X = SourceControl.Left + SourceControl.Width

繪制控件間的連接配接線

                iSP.Y = SourceControl.Top + SourceControl.Height  4

繪制控件間的連接配接線

                iEP.X = TargetControl.Left + TargetControl.Width  4

繪制控件間的連接配接線

                iEP.Y = TargetControl.Top + TargetControl.Height

繪制控件間的連接配接線
繪制控件間的連接配接線

                iGraphicsPath.AddLine(iSP.X, iSP.Y, iEP.X, iSP.Y)

繪制控件間的連接配接線

                iGraphicsPath.AddLine(iEP.X, iSP.Y, iEP.X, iEP.Y)

繪制控件間的連接配接線
繪制控件間的連接配接線

            ElseIf TargetControl.Top > (SourceControl.Top + SourceControl.Height) Then

繪制控件間的連接配接線

                '右下角

繪制控件間的連接配接線

                '_

繪制控件間的連接配接線

                ' |

繪制控件間的連接配接線

                iSP.X = SourceControl.Left + SourceControl.Width

繪制控件間的連接配接線

                iSP.Y = SourceControl.Top + SourceControl.Height * 3  4

繪制控件間的連接配接線

                iEP.X = TargetControl.Left + TargetControl.Width  4

繪制控件間的連接配接線

                iEP.Y = TargetControl.Top

繪制控件間的連接配接線
繪制控件間的連接配接線

                iGraphicsPath.AddLine(iSP.X, iSP.Y, iEP.X, iSP.Y)

繪制控件間的連接配接線

                iGraphicsPath.AddLine(iEP.X, iSP.Y, iEP.X, iEP.Y)

繪制控件間的連接配接線
繪制控件間的連接配接線

            Else

繪制控件間的連接配接線

                '右邊

繪制控件間的連接配接線

                '_

繪制控件間的連接配接線

                '

繪制控件間的連接配接線

                iSP.X = SourceControl.Left + SourceControl.Width

繪制控件間的連接配接線

                iSP.Y = SourceControl.Top + SourceControl.Height  2

繪制控件間的連接配接線

                iEP.X = TargetControl.Left

繪制控件間的連接配接線

                iEP.Y = TargetControl.Top + TargetControl.Height  2

繪制控件間的連接配接線
繪制控件間的連接配接線

                iGraphicsPath.AddLine(iSP.X, iSP.Y, iEP.X + (iSP.X - iEP.X)  2, iSP.Y)

繪制控件間的連接配接線

                iGraphicsPath.AddLine(iEP.X + (iSP.X - iEP.X)  2, iEP.Y, iEP.X, iEP.Y)

繪制控件間的連接配接線
繪制控件間的連接配接線

            End If

繪制控件間的連接配接線

        Else

繪制控件間的連接配接線

            If (TargetControl.Top + TargetControl.Height) < SourceControl.Top Then

繪制控件間的連接配接線

                '上邊

繪制控件間的連接配接線

                '|

繪制控件間的連接配接線

                '

繪制控件間的連接配接線

                iSP.X = SourceControl.Left + SourceControl.Width  2

繪制控件間的連接配接線

                iSP.Y = SourceControl.Top

繪制控件間的連接配接線

                iEP.X = TargetControl.Left + TargetControl.Width  2

繪制控件間的連接配接線

                iEP.Y = TargetControl.Top + TargetControl.Height

繪制控件間的連接配接線
繪制控件間的連接配接線

                iGraphicsPath.AddLine(iSP.X, iSP.Y, iSP.X, iSP.Y - (iSP.Y - iEP.Y)  2)

繪制控件間的連接配接線

                iGraphicsPath.AddLine(iEP.X, iSP.Y - (iSP.Y - iEP.Y)  2, iEP.X, iEP.Y)

繪制控件間的連接配接線
繪制控件間的連接配接線

            ElseIf TargetControl.Top > (SourceControl.Top + SourceControl.Height) Then

繪制控件間的連接配接線

                '下邊

繪制控件間的連接配接線

                '|

繪制控件間的連接配接線

                iSP.X = SourceControl.Left + SourceControl.Width  2

繪制控件間的連接配接線

                iSP.Y = SourceControl.Top + SourceControl.Height

繪制控件間的連接配接線

                iEP.X = TargetControl.Left + TargetControl.Width  2

繪制控件間的連接配接線

                iEP.Y = TargetControl.Top

繪制控件間的連接配接線
繪制控件間的連接配接線

                iGraphicsPath.AddLine(iSP.X, iSP.Y, iSP.X, iSP.Y - (iSP.Y - iEP.Y)  2)

繪制控件間的連接配接線

                iGraphicsPath.AddLine(iEP.X, iSP.Y - (iSP.Y - iEP.Y)  2, iEP.X, iEP.Y)

繪制控件間的連接配接線

            Else

繪制控件間的連接配接線

                '重合

繪制控件間的連接配接線

                '什麼都不做

繪制控件間的連接配接線

            End If

繪制控件間的連接配接線

        End If

繪制控件間的連接配接線
繪制控件間的連接配接線

        Return iGraphicsPath

繪制控件間的連接配接線

    End Function

繪制控件間的連接配接線
繪制控件間的連接配接線
繪制控件間的連接配接線
繪制控件間的連接配接線

    Private Sub Button1_Click()Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

繪制控件間的連接配接線

        Dim iG As Graphics = Me.CreateGraphics

繪制控件間的連接配接線

        Dim iGP As Drawing2D.GraphicsPath

繪制控件間的連接配接線

        Dim iSPen As New Pen(Color.Blue, 3)

繪制控件間的連接配接線
繪制控件間的連接配接線

        iSPen.StartCap = LineCap.RoundAnchor

繪制控件間的連接配接線

        iSPen.EndCap = LineCap.ArrowAnchor

繪制控件間的連接配接線
繪制控件間的連接配接線

        iGP = CreateGraphicsPathByControls(ListBox1, ListBox2)

繪制控件間的連接配接線

        iG.DrawPath(iSPen, iGP)

繪制控件間的連接配接線

    End Sub

繪制控件間的連接配接線

End Class

繪制控件間的連接配接線

繼續閱讀