Shaped Form

C-H

Erfahrenes Mitglied
Hallo!

Kennt jemand ein gutes Tutorial in dem beschrieben wird wie man (ohne Bilder!) eine Form z.B. an den Ecken abrundet? Also so wie z.B. beim MSN Messanger? Oder auch komplexere Formen wie beim Windows Media Player?

Danke schonmal.
 
Das weiss ich schon wie das geht, trotzdem Danke!


Mein Problem ist, dass dieser Code:
Code:
Dim shape As New System.Drawing.Drawing2D.GraphicsPath()

shape.AddEllipse(0, 0, 20, 20)

shape.AddEllipse(Me.Width - 20, 0, 20, 20)

shape.AddEllipse(0, Me.Height - 20, 20, 20)

shape.AddEllipse(Me.Width - 20, Me.Height - 20, 20, 20)

Me.Region = New System.Drawing.Region(shape)
nicht so funktioniert wie ich will :( .

Ich wollte halt an den 4 Ecken jeweils eine Ellipse zeichnen, und dann dazwischen mit Rechtecken ausfüllen.

Leider scheint dort, wo sich die Ellipsen mit dem Rechteck überschneiden der Hintergrund, sprich die Form durch.
 
Hallo!

Mit ein bisschen Überlegen Hab' ich's geschafft. Ich poste morgen hier den Code, für den Interessierten. :)
 
So hier der Code:


Zuerst einen GraphicsPath erstellen:
Dim shapePath As New GraphicsPath(FillMode.Winding)

Dann kann man mit verschiedenen Methoden einen Pfad erstellen. Exemplarisch hier mal ein abgerundetes Rechteck:

' Ecke links oben
shapePath.AddArc(0, 0, 10, 10, 180, 90)

' Ecke rechts oben
shapePath.AddArc(Me.Width - 10, 0, 10, 10, 270, 90)

'Ecke unten rechts
shapePath.AddArc(Me.Width - 10, Me.Height - 30, 10, 10, 0, 90)

' Ecke unten links
shapePath.AddArc(0, Me.Height - 30, 10, 10, 90, 90)

Die Linien zwischen den "Viertel-Kreisen" braucht man nicht anzugeben, mit dem Parameter True der Funktion "AddPath" wird der Pfad automatishc geschlossen. Nur sollte man auf die richtige Reihenfolge im Code achten, sonst kommt eine modernes Kunstwerk raus. :suspekt:

Jetzt muss nur noch die sogenannte Region der Form ausgeschnitten werden:

Dim shape As New GraphicsPath()
shape.AddPath(shapePath, True)
Me.Region = New System.Drawing.Region(shape)


 
Zurück