Problem bei runde Labels erzeugen.

  • VB.NET

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

    Problem bei runde Labels erzeugen.

    Hallo zusammen

    Beim Erstellen vom 6*7 labels bekomme ich statt 42 nur 21 runde Labels angezeigt. Ich komm einfach nicht auf den Fehler.

    VB.NET-Quellcode

    1. '6*7 Labels erzeugen
    2. For i1 = 1 To 6
    3. For i2 = 1 To 7
    4. lbl = New Label
    5. With lbl
    6. .Region = New Region(Rund)
    7. .Width = 50
    8. .Height = 50
    9. .Top = 100 + (i1 - 1) * 60
    10. .Left = 30 + (i2 - 1) * 60
    11. .BackColor = Color.White
    12. .Name = "lbl" & i1 & i2
    13. End With
    14. Me.Controls.Add(lbl)
    15. Next
    16. Next


    VB.NET-Quellcode

    1. Function Rund() As System.Drawing.Drawing2D.GraphicsPath
    2. path.AddEllipse(New Rectangle(0, 0, 50, 50))
    3. Return path
    4. End Function

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „snowcrack“ ()

    Hallo, grundsätzlich sehe ich keinen Fehler. Unter der Vorraussetzung, das path auch in Rund() deklariert wird.

    VB.NET-Quellcode

    1. Function Rund() As GraphicsPath
    2. Dim path As New GraphicsPath()
    3. path.AddEllipse(New Rectangle(0, 0, 50, 50))
    4. Return path
    5. End Function


    Dann habe ich lbl noch am Anfang der Methode deklariert:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim lbl As Label


    Dann funktionierte bei mir alles perfekt.
    Der Kopf
    (Global deklariert)

    VB.NET-Quellcode

    1. Private iRnd As New Random
    2. Private btn As Button
    3. Private lbl As Label
    4. Private bSp1, bSp2 As Boolean
    5. Private sArray(6, 7) As String
    6. Private path As New System.Drawing.Drawing2D.GraphicsPath

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „snowcrack“ ()

    Simpler Fehler :D ;)
    Du fügst jedesmal eine neue Ellipse zum Pfad hinzu. Der Pfad ist Standartmäßig so programmiert, dass doppelt zu zeichnende Bereiche nicht gezeichnet werden. D.h. erzeuge den Pfad nur einmal und es geht:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. 'Pfad erstellen
    3. Rund()
    4. 'Region erstellen
    5. Dim Region As New Region(path)
    6. '6*7 Labels erzeugen
    7. For i1 = 1 To 6
    8. For i2 = 1 To 7
    9. lbl = New Label
    10. With lbl
    11. 'Die Region zuweisen
    12. .Region = Region
    13. .Width = 50
    14. .Height = 50
    15. .Top = 100 + (i1 - 1) * 60
    16. .Left = 30 + (i2 - 1) * 60
    17. .BackColor = Color.White
    18. .Name = "lbl" & i1 & i2
    19. End With
    20. Me.Controls.Add(lbl)
    21. Next
    22. Next
    23. End Sub
    24. Function Rund() As GraphicsPath
    25. path.AddEllipse(New Rectangle(0, 0, 50, 50))
    26. Return path
    27. End Function