mit vb ein panel acheckig machen

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Niko Ortner.

    Du kannst was achteckiges draufzeichnen.
    Aber bei Windows sind die Controls immer rechteckig. Forms sind da eine kleine Ausnahme, denn man kann der Region-Eigenschaft auch eine beliebige Region zuweisen, wenn die FormBorderStyle-Eigenschaft auf None gestellt ist.
    Aber ich glaube, dass dann die Form ansich trotzdem rechteckig ist, von Windows nur anders gezeichnet wird.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Du müsstest dann die Maus-ereignisse, die außerhalb des 8-Ecks, aber innerhalb der umhüllenden Form stattfinden, an die darunterliegende Form durchreichen, das dürfte aber stressig werden.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    VB.NET-Quellcode

    1. Sub Abrunden(Was As Object, ....)
    2. '...
    3. Was.Region = ... 'Waaaaaas?
    4. End Sub


    Ungünstiges Konzept. Besser den GraphicsPath direkt zurückgeben. Der kann dann für beliebige Sachen genutzt werden.

    VB.NET-Quellcode

    1. Sub abrunden(ByVal x As Integer, ByVal y As Integer, _
    2. ByVal width As Integer, ByVal height As Integer, _
    3. ByVal radius As Integer)
    4. Dim gp As New System.Drawing.Drawing2D.GraphicsPath
    5. gp.AddLine(x + radius, y, x + width - radius, y)
    6. gp.AddArc(x + width - radius, y, radius, radius, 270, 90)
    7. gp.AddLine(x + width, y + radius, x + width, y + height - radius)
    8. gp.AddArc(x + width - radius, y + height - radius, radius, radius, 0, 90)
    9. gp.AddLine(x + width - radius, y + height, x + radius, y + height)
    10. gp.AddArc(x, y + height - radius, radius, radius, 90, 90)
    11. gp.AddLine(x, y + height - radius, x, y + radius)
    12. gp.AddArc(x, y, radius, radius, 180, 90)
    13. gp.CloseFigure()
    14. Return gp
    15. End Sub

    Und dann disposen nicht vergessen.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils