Linie zeichnen?

Christoph1972

Erfahrenes Mitglied
Hallo

Ich versuche gerade ein Prozessleitsystem zu simulieren, mit Behältern, Pumpen, Ventilen usw. Nun möchte ich die Bauteile, die ich mit Fireworks gezeichnet habe, mit Linien verbinden. Könnte mir mal jemand sagen, wie ich am Einfachsten Linien zeichnen kann, oder mir sagen wo ich ein Tutorial, oder Beispiel finde? Ich habe schon mal was gesehen, nur kann ich es nicht mehr finden.

Gruß
Christoph
 

Norbert Eder

Erfahrenes Mitglied
GDI+ ist das Zauberwort.

Unter den Tutorials gibt es eines (http://www.tutorials.de/tutorials155061.html), das sich mit diesem Thema beschäftigt. Die Codebeispiele sind zwar in C#, aber alleine durch das Lesen des Textes weißt du was du machen musst.

Ansonsten solltest du mit GDI+ als Suchwort im Google jede Menge Tutorials und Artikel finden.
 

Christoph1972

Erfahrenes Mitglied
Oh, ich denke das ich dann die ganze Oberfläche mit Fireworks mache und diese dann mit einer Picturebox importiere. So braucht man ja ewig um die Linien dahin zubekommen, wo sie hin sollen. Oder ist das keine gute Lösung?

Gruß
Christoph
 

Norbert Eder

Erfahrenes Mitglied
Da kann ich dir keine Antwort darauf geben. Ich weiß ja nicht ob dein Tool da dynamisch oder statisch sein soll etc.

Und eine Linie zu zeichnen is nun wohl wirklich nicht der Aufwand.
 

Christoph1972

Erfahrenes Mitglied
Das Tool wird dann wohl zwangläufig statisch:-( Es werden aber deutlich mehr als nur eine Line und Winkel kommen auch noch dazu.


Gruß
Christoph
 

Christoph1972

Erfahrenes Mitglied
So mache ich das:

Code:
 Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
        
        Dim myPen As New System.Drawing.Pen(System.Drawing.Color.Black, 3)
        Dim formGraphics As System.Drawing.Graphics
        formGraphics = Me.CreateGraphics()

        formGraphics.DrawLine(myPen, 373, 249, 373, 355)


        'Dieser teil erstellt einen gestrichelten Stift
        '-----------------------------------------------
        Dim myPen3 As New System.Drawing.Pen(System.Drawing.Color.Black, 1)
        e.Graphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
        myPen3.DashStyle = Drawing2D.DashStyle.Dash

        formGraphics.DrawLine(myPen, 373, 249, 373, 355)
        '-----------------------------------------------

End Sub
 

Christoph1972

Erfahrenes Mitglied
So, da das zeichnen per Code doch recht mühsam ist, habe ich nun meine Linie in ein UserControl gepackt. Einfach folgenden Code in ein UC kopieren und dann könnt ihr eure Linien einfach aufs Form setzen und beliebig verändern.


Der Code ist für eine horizontale Linie:

Code:
Private Sub ucLinie_OnPaint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint

        Dim X As Integer = Me.Width
        Dim Stiftbreite As Integer = 4
        Me.Height = Stiftbreite - 1
        Dim myPen As New System.Drawing.Pen(System.Drawing.Color.Black, Stiftbreite)

        e.Graphics.DrawLine(myPen, 0, 2, X, 2)

    End Sub

Dieser für eine vertikale Linie:

Code:
Private Sub ucLinieVertikal_OnPaint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint

        Dim X As Integer = Me.Height
        Dim Stiftbreite As Integer = 4
        Me.Width = Stiftbreite - 1
        Dim myPen As New System.Drawing.Pen(System.Drawing.Color.Black, Stiftbreite)

        e.Graphics.DrawLine(myPen, 2, 0, 2, X)

    End Sub

Ich werde mir auch noch was überlegen, wie man das mit einem UC lösen kann.

Gruß
Christoph