[Guide]Formen mit der Drawing Namespace erstellen

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • [Guide]Formen mit der Drawing Namespace erstellen

      Wie angekündigt kommt hier mein Guide zum erstellen von eigenen Formen

      Als erstes zur theorie:

      Wir erstellen als erstes einmal aus linien den umris und wenden ihn dann auf die Form an.

      Zur praxis:

      Als erstes Einmal wie solls aussehen


      diese form besteht aus 8 teilen
      4 kurven und 4 linien



      nun zum Programmcode

      Als erstes erstellen wir den pfad der form

      Quellcode

      1. Dim path As New Drawing.Drawing2D.GraphicsPath


      nun haben wir ein pfad objekt aber noch keinen pfad
      den fügen wir nun hinzu
      wir beginen als erstes mit der linie die ganz oben ist
      in diesem bild sieht man gut wie die linien und kreise aufgeteilt sind


      Die Linie fängt also ganz oben direkt hinter dem kreis also dem radius an und endet direkt vor dem kreis also dem radius
      der radius hat den wert 20
      daher deklinieren wir eine variable vom type int

      Quellcode

      1. Dim radius As Integer = 20


      eine linie fügt man so hinzu
      Pfadname.AddLine(Xwert des ersten punktes, ywert des ersten punkts, x des endpunktes, y des endpunkts)
      also für die obere linie

      Quellcode

      1. path.AddLine(radius, 0, Me.Width - radius, 0)

      dann nehmen wir uns den rechten oberen bogen for

      einen bogen fügt man mit arc hinzu
      arc ist ein teil der elipse
      beim hinzufügen muss man wissen das sie aus enem kasten besteht, dem start winkel und der große in grad
      die box sieht so aus

      der startpunkt ist die position der box und der radius ist die größe der box

      der startwinkel einer ark ist nach untenhin 0 also

      das wäre eine ark mit dem startgrad 0 und der größe 90 grad

      nun wollen wir sie ja dass sie wie oben rechts ist also das es am anfang nach rechts geht und dann hinter der furve nach unten
      also muss der startgrad bei 270 sein und die größe soll 90 sein

      der code für ne ark funktioniert so

      Quellcode

      1. PfadObject.AddArc(xwert des oberen linken punktes der box, y wert des punktes, länge der box, höhe der box, startgrad, größe)

      die box beginnt wie man oben gut sehen kann hinter der linie also bei der breite der form- radius ergo lautet der code

      Quellcode

      1. path.AddArc(Me.Width - radius, 0, radius, radius, 270, 90)


      für die anderen kurven und linien rauszufinden muss man nur ein bisschen nachdenken deshalb geh ich da nicht näher drauf ein

      nun haben wir 4 einzelne linien und 4 kurven aber die müssen erst zu einem pfad werden
      das machen wir mit

      Quellcode

      1. path.CloseFigure()


      nun müssen wir nur noch den pfad auf das objekt (form, picturebox, progressbar, whatever) anwenden
      ich verwende die form (Me) aber bei allen anderen objs der windows.forms gehts genauso

      Quellcode

      1. Me.Region = New Region(path)


      und jtz nur noch den pfad ausm ram löschen

      Quellcode

      1. path.Dispose()


      dür die die nur copy und paste wollen hier der gesammte code:

      Quellcode

      1. Dim path As New Drawing.Drawing2D.GraphicsPath
      2. Dim radius As Integer = 20
      3. path.AddLine(0 + radius, 0, Me.Width - radius, 0)
      4. path.AddArc(Me.Width - radius, 0, radius, radius, 270, 90)
      5. path.AddLine(Me.Width, radius, Me.Width, Me.Height - radius)
      6. path.AddArc(Me.Width - radius, Me.Height - radius, radius, radius, 0, 90)
      7. path.AddLine(radius, Me.Height, Me.Width - radius, Me.Height)
      8. path.AddArc(0, Me.Height - radius, radius, radius, 90, 90)
      9. path.AddLine(0, radius, 0, Me.Height - radius)
      10. path.AddArc(0, 0, radius, radius, 180, 90)
      11. path.CloseFigure()
      12. Me.Region = New Region(path)
      13. path.Dispose()
      Alles anzeigen
    • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )