Windows Forms und Steuerelementen in Visual Studio .NET andere Formen geben

Veröffentlicht: 07. Mrz 2002 | Aktualisiert: 16. Jun 2004

Zusammenfassung: Die Form von Windows Forms und Steuerelementen lässt sich problemlos anpassen. Für Formulare, die von der Standardform abweichen, sind lediglich eine Bilddatei sowie einige Einstellungen in den Eigenschaften erforderlich (9 Seiten).

Auf dieser Seite

Einführung Einführung
Methodik Methodik
Formgebung Formgebung
Neue Formen für Steuerelemente Neue Formen für Steuerelemente
Weitere Schritte Weitere Schritte
Schlussfolgerung Schlussfolgerung

Einführung

In früheren Versionen von Microsoft® Visual Basic® war das Erzeugen nicht rechteckiger Fenster und Steuerelemente zeitaufwändig und arbeitsintensiv, da API-Aufrufe und viele komplizierte Programmiervorgänge erforderlich waren.
Doch nun ist Abhilfe in Sicht, da Windows Forms auch in nicht rechteckiger Form erzeugt werden können. Microsoft Windows Media™ Player 7 verfügt über dieses Feature, und zweifellos werden es viele Entwickler in ihre eigenen Anwendungen integrieren wollen.
Zudem können Sie unterschiedlich geformte Steuerelemente in einem Formular darstellen. Benutzer von Standardfenstern und -steuerelementen werden bei einer Anwendung mit nicht rechteckigen Formularen und Steuerelementen das spezifische Aussehen besonders bemerken.
Sowohl Windows Forms als auch Steuerelemente lassen sich in den verschiedensten Formen zeichnen. In diesem Artikel erfahren Sie zunächst, wie Sie ein unregelmäßig geformtes Formular erstellen. Anschließend erzeugen Sie nicht rechteckige Steuerelemente, die Sie in diesem Formular platzieren können.

Anmerkung: Für diesen Vorgang ist ein hohes Maß an Grafikprogrammierung erforderlich. Je nach Speicherkapazität und installierter Grafikkarte kann dies zu unterschiedlichen Leistungen der Computer führen. Prüfen Sie jede Anwendung, die benutzerdefiniertes Zeichnen erfordert, vor ihrer Bereitstellung immer erst auf unterschiedliche Grafikkarten, um ein zufrieden stellendes Ergebnis zu gewährleisten.

 

Methodik

Das Programmieren nicht rechteckiger Formen funktioniert im Wesentlichen wie folgt: Zunächst zeichnen Sie eine Bitmap, die letztendlich als Ihr Formular dienen soll. Sie sollte daher groß genug sein, dass sie alle benötigten Steuerelemente aufnehmen kann. Anschließend bearbeiten Sie einige Eigenschaften, damit aus der Bitmap das gewünschte Formular wird.

Außerdem werden Sie eine Eigenschaft zum Entfernen der Titelleiste einrichten. Schließlich soll Ihr ausgefallenes Formular doch nicht die altbekannte rechteckige Titelleiste aufweisen, oder?. Allerdings gehen mit dem Entfernen der Titelleiste auch alle damit verbundenen Funktionen verloren, wie z.B. das Verschieben und Schließen des Formulars. Daher müssen Sie entsprechenden Code schreiben, um diese verloren gegangenen Funktionen zu ersetzen, damit der Benutzer das von Ihnen erstellte Formular weiterhin in der gewünschten Art und Weise verwenden kann.

Zur Formanpassung der Formulare in Ihrer Windows-basierten Anwendung müssen Sie daher wie folgt vorgehen:

  • Erstellen Sie eine .bmp-Datei, mit der die gewünschte Form des Formulars festgelegt wird.

  • Erzeugen Sie ein Windows-Anwendungsprojekt, und richten Sie die Eigenschaften so ein, dass die .bmp-Datei als Hintergrund des Formulars verwendet und die Titelleiste entfernt wird.

  • Geben Sie den Code ein, der die Funktionalität der Titelleiste wieder herstellt, beispielsweise das Verschieben und Schließen des Formulars.

 

Formgebung

In diesem Abschnitt stellen Sie Schritt für Schritt ein Formular in nicht rechteckiger Form zusammen.

So zeichnen Sie eine nicht rechteckige Bitmap

  1. Öffnen Sie ein Grafikprogramm, mit dem Sie Bitmaps zeichnen können. Microsoft Paint beispielsweise, das Sie über über das Menü Start aufrufen. Programme | Zubehör und klicken Sie dort auf Paint.

  2. Erstellen Sie in Paint eine nicht rechteckige, einfarbige Form mit einem andersfarbigen Hintergrund. Die Form, die Sie nun zeichnen, ist letztendlich Ihr Formular. Sie sollte daher groß genug für Ihre Zwecke sein.

    Nachfolgend ein Beispiel:

    vbsfexample.gif

    Abbildung 1

    Anmerkung: Wählen Sie eine einfache Hintergrundfarbe, beispielsweise Blau. Dies ist für später wichtig.

  3. Speichern Sie die .bmp-Datei.

    Mit dieser Bitmap, die als Grundlage für Ihr Formular dient, können wir nun ein Projekt anlegen.

Anlegen des Projekts

  • Erstellen Sie in Microsoft Visual Studio® .NET ein Windows-Anwendungsprojekt. (Ausführliche Informationen finden Sie unter "Creating a Windows Application Project".)

So richten Sie den Hintergrund ein, um die Form des Formulars festzulegen

  1. Klicken Sie im Windows Forms-Designer auf das Formular, um den Fokus festzulegen.

  2. Gehen Sie im Eigenschaftenfenster wie folgt vor:

    • Setzen Sie die FormBorderStyle-Eigenschaft auf None.

      Diese Eigenschaft entfernt die Titelleiste aus dem Formular (sowie sämtliche Funktionen der Titelleiste, z.B. Schließen oder Verschieben des Formulars. Sie finden in diesem Artikel jedoch auch den Code, mit dem dieses Problem behoben wird).

    • Setzen Sie die BackgroundImage-Eigenschaft des Formulars auf die zuvor von Ihnen erstellte .bmp-Datei. Sie brauchen die Datei nicht dem Projektsystem hinzuzufügen, dies geschieht automatisch, wenn Sie sie als Hintergrundbild angeben.

      Diese Eigenschaft legt das Bitmapbild als Hintergrund Ihres Formulars fest. (Zusammen mit der unten genannten TransparencyKey-Eigenschaft definiert sie die Formgebung des Formulars.)

    • Setzen Sie die TransparencyKey-Eigenschaft auf die Hintergrundfarbe der .bmp-Datei. Dem oben genannten Beispiel folgend wäre dies die Farbe Blau.

      Diese Eigenschaft weist die Anwendung an, welche Teile des Formulars transparent sein sollen. (Wir werden die gewünschte Form des Formulars aus einem Rechteck "ausschneiden".)

  3. Speichern Sie die Anwendung. Drücken Sie F5, um die Anwendung auszuführen.

Bei Laufzeit sieht Ihr Windows Form nun wie die Bitmap aus. Beachten Sie außerdem, dass zum Verschieben oder Schließen der Anwendung keine Titelleiste zur Verfügung steht. Drücken Sie die Tastenkombination ALT+F4, um die Anwendung zu schließen und die Entwicklung fortzusetzen.

Da Sie die FormBorderStyle-Eigenschaft auf None gesetzt haben, wurden die Standardfunktionen der Titelleiste deaktiviert. Aus diesem Grund müssen Sie dem Projekt nun benutzerdefinierten Code hinzufügen, um das Formular verschieben zu können. Mit dem nachfolgenden Vorgang wird ein Button-Steuerelement hinzugefügt, um das Formular zu schließen. Außerdem erfahren Sie, wie Sie den Code zum Verschieben des Formulars schreiben.

So schreiben Sie Code für das Verschieben des Formulars

  1. Ziehen Sie aus der Toolbox ein Button-Steuerelement in das Formular.

  2. Setzen Sie im Eigenschaftenfenster die Text-Eigenschaft auf "Formular schließen".

  3. Doppelklicken Sie auf die Schaltfläche, um einen Click-Ereignishandler hinzuzufügen

    Daraufhin wird der Code-Editor geöffnet, und der Einfügepunkt befindet sich im Click-Ereignishandler der Schaltfläche.

  4. Geben Sie einen ähnlichen wie den nachfolgenden Code ein, um das Formular durch Klicken auf die Schaltfläche zu schließen:

    ' Visual Basic Private Sub Button1_Click(ByVal sender As System.Object, _
         ByVal e As System.EventArgs)  
    Handles Button1.Click    Me.Close() End Sub // C# private void button1_Click(object sender,  
    System.EventArgs e) {   this.Close(); } 
    
  5. Erstellen Sie nun eine Prozedur, um das Formular durch Ziehen zu verschieben. Geben Sie einen ähnlichen wie den nachfolgenden Code ein, um ein neues Point-Objekt zu erstellen: Dies fungiert als Variable, wenn Sie berechnen, wie das Formular verschoben werden soll:

    ' Visual Basic Private mouse_offset As Point // C# private Point mouse_offset;
    
  6. Erstellen Sie einen Ereignishandler für das MouseDown-Ereignis des Formulars. Wir werden einen entsprechenden Code dafür schreiben, damit der Benutzer auf eine beliebige Stelle im Formular klicken kann, um es an eine andere Position zu ziehen.

    Wenn Sie mit Visual Basic arbeiten, erstellen Sie den Ereignishandler mit dem Feld Klassenname oben im Code-Editor, und wählen Sie (Basisklassenereignisse). Wählen Sie im Feld Methodenname das Ereignis MouseDown.

  7. Wenn Sie mit C# arbeiten, erstellen Sie den Ereignishandler, indem Sie mit der rechten Maustaste im Projektmappen-Explorer auf das Formular klicken und Designer anzeigen auswählen. Klicken Sie im Eigenschaftenfenster auf die Schaltfläche Ereignisse (Blitzsymbol oben im Fenster). Suchen Sie das Load-Ereignis, und geben Sie im rechten Feld Form1_Load ein. Drücken Sie die Eingabetaste, um den Ereignishandler für dieses Ereignis zu erstellen.
    Geben Sie einen ähnlichen wie den folgenden Code ein, um der mouse_offset-Variablen Koordinaten auf Grundlage der aktuellen Position der Maus zuzuweisen:

    ' Visual Basic  
    Private Sub Form1_MouseDown(sender As Object, _  
    e As System.Windows.Forms.MouseEventArgs) _  
    Handles MyBase.MouseDown  
        mouse_offset = New Point(- e.X, - e.Y)  
    End Sub   
    // C#  
    private void Form1_MouseDown(object sender,  System.Windows.Forms.MouseEventArgs e)  
    {   
          mouse_offset = new Point(-e.X, -e.Y);  
    }
    
  8. Erstellen Sie einen Ereignishandler für das MouseMove-Ereignis des Formulars. Geben Sie einen ähnlichen wie den folgenden Code ein. Wenn Sie mit der linken Maustaste klicken und die Maus ziehen, wird die Location-Eigenschaft des Formulars auf die neue Position gesetzt.

    ' Visual Basic  
    Private Sub Form1_MouseMove(sender As Object, _  
    e As System.Windows.Forms.MouseEventArgs) _  
    Handles MyBase.MouseMove  
       If e.Button = MouseButtons.Left Then  
          Dim mousePos As Point = Control.MousePosition  
          mousePos.Offset(mouse_offset.X, mouse_offset.Y)  
          Location = mousePos  
       End If   
    End Sub   
    // C#  
    private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)  
    {  
       if (e.Button == MouseButtons.Left)   
       {  
          Point mousePos = Control.MousePosition;  
          mousePos.Offset(mouse_offset.X, mouse_offset.Y);  
          Location = mousePos;  
       }  
    }
    
  9. Speichern Sie die Anwendung. Drücken Sie F5, um die Anwendung auszuführen. Das Formular hat nun die Gestalt des Bildes, das Sie zu Anfang gezeichnet haben.

    Klicken Sie auf eine beliebige Stelle im Formular, und ziehen Sie das Formular, um das Verschieben zu testen. Klicken Sie auf die Schaltfläche "Formular schließen", um das Formular zu schließen.

Großartig! Das war jedoch noch nicht alles. Jetzt erstellen wir Steuerelemente mit benutzerdefinierten Formen.

 

Neue Formen für Steuerelemente

In diesem Abschnitt erfahren Sie, wie Sie Steuerelementen eine benutzerdefinierte Form geben. Da Steuerelemente über keine TransparencyKey-Eigenschaft verfügen, verwenden wir eine andere Methode, damit sie sich selbst in einer ausgefallenen Form zeichnen.
Im vorherigen Abschnitt haben wir die Form des Formulars mit Hilfe eines Bildes und einiger transparenter Bildschirmausschnitte "ausgeschnitten". Ein Steuerelement mit einer benutzerdefinierten Form wird auf andere Art gezeichnet. Sie weisen dabei nämlich das Formular an, wie das Steuerelement gezeichnet werden soll und geben dabei die genauen Bildschirmkoordinaten an. Keine Sorge, dies klingt komplizierter als es ist. Das .NET Framework verfügt über Klassen und Methoden, die Ihnen diese Art des benutzerdefinierten Zeichnens erleichtern.

Nicht rechteckige Steuerelemente

Betrachten Sie den Bildschirmbereich, auf dem sich das Steuerelement zeichnen soll, als Region. Die .NET-Framework-Klassen geben dem Steuerelement entsprechende Anweisungen, wie es sich zu zeichnen hat. Durch Angabe unterschiedlicher Anweisungen zeichnet sich das Steuerelement entsprechend Ihren Vorstellungen.

Ihre Anweisungen nutzen dabei den Vorteil der GraphicsPath-Klasse, die eine Reihe von miteinander verbundenen Linien und Kurven darstellt, mit denen sich Formen zeichnen lassen. Geben Sie zunächst eine Instanz der GraphicsPath-Klasse an, und weisen Sie sie an, welche Formen sie zeichnen soll. Setzen Sie als Nächstes die Region-Eigenschaft des Steuerelements auf die Instanz der GraphicsPath-Klasse. Somit sind schon alle Anforderungen erfüllt, um Steuerelemente mit einer einmaligen Oberfläche zu erstellen.

Hier noch ein Mal die erforderlichen Schritte, um die Form der Steuerelemente von Windows Forms anzupassen:

  • Erstellen Sie eine Instanz der GraphicsPath-Klasse.

  • Geben Sie die Details der GraphicsPath-Klasse an (Größe, Form usw.), damit sie das Steuerelement in der gewünschten Form zeichnet.

  • Setzen Sie die Region-Eigenschaft des Steuerelements auf die Instanz der GraphicsPath-Klasse.

Steuerelemente lassen sich in den verschiedensten Formen erstellen. In diesem Kapitel erstellen Sie eine Schaltfläche in Form der Worte "Klick mich an!".

So erstellen Sie eine Schaltfläche mit Textform

1.Ziehen Sie ein Button-Steuerelement aus der Toolbox in das Formular.
2.Gehen Sie im Eigenschaftenfenster wie folgt vor:

  • Setzen Sie die (Name)-Eigenschaft auf CustomButton.

  • Setzen Sie die BackColor-Eigenschaft von CustomButton auf eine Farbe, die sich gut sichtbar vom Hintergrund Ihres Formulars abhebt.

  • Ändern Sie die Text-Eigenschaft von CustomButton in eine leere Zeichenfolge.

3.Klicken Sie mit der rechten Maustaste auf das Formular, und wählen Sie Code anzeigen.
4.Erstellen Sie einen Ereignishandler für das Load-Ereignis des Formulars.

Wählen Sie im Feld Klassenname oben im Code-Editor CustomButton aus. Wählen Sie im Feld Methodenname die Option Paint aus.

5.Geben Sie einen ähnlichen wie den folgenden Code ein, um die Schaltfläche unter Verwendung einer Instanz der GraphicsPath-Klasse auf benutzerdefinierte Weise zu zeichnen.

Mit dem nachfolgenden Code zeichnet sich die Schaltfläche als Textzeichenfolge in der Schriftart Arial. Zusätzlich legt der Code weitere Attribute der Zeichenfolge fest (Schriftgrad, Schriftschnitt usw.). Anschließend wird die Zeichenfolge einer Instanz der GraphicsPath-Klasse hinzugefügt. Zum Schluss wird GraphicsPath auf die Region-Eigenschaft der Schaltfläche gesetzt. Wie bereits erwähnt, ist eine Region der definierte Zeichenbereich in einem Bildschirmausschnitt.

' Visual Basic  
Private Sub CustomButton_Paint(ByVal sender As Object, _  
ByVal e As System.Windows.Forms.PaintEventArgs) _  
Handles CustomButton.Paint  
   'Instanzieren Sie eine neue Instanz der GraphicsPath-Klasse.  
   Dim myGraphicsPath As New System.Drawing.Drawing2D.GraphicsPath()  
   'Geben Sie eine Zeichenfolge an. Diese bestimmt die Form des Steuerelements.  
   Dim stringText As String = "Klick mich an!"  
   'Geben Sie die Schriftart für die Zeichenfolge an.  
   Dim family As FontFamily = New FontFamily("Arial")  
   'Geben Sie den Schriftschnitt für die Zeichenfolge an.  
   Dim fontStyle As FontStyle = fontStyle.Bold  
   'Geben Sie hier die Höhe der Zeichenfolge an.  
   'Diese Ganzzahl stellt eine Seite eines Quadrats dar.  
   'Die von Ihnen angegebene Zeichenfolge wird innerhalb dieses Quadrats gezeichnet.  
   'Eine größere Ganzzahl vergrößert die Zeichenfolge,  
   'eine kleinere Ganzzahl verkleinert die Zeichenfolge.  
   Dim emSize As Integer = 35  
   'Diese Stelle gibt den  
   'Textanfang an. Sie wird vom Rand des  
   'Steuerelements aus berechnet, nicht vom Formular.  
   Dim origin As PointF = New PointF(0, 0)  
   'Ein StringFormat-Objekt, das  
   'Informationen zur Textformatierung angibt, z.B.   
   'Zeilenabstand und Ausrichtung.  
Dim format As StringFormat = StringFormat.GenericDefault  
   'Erstellen Sie mit der AddString-Methode die Zeichenfolge, deren  
   'Details Sie oben angegeben haben.  
   myGraphicsPath.AddString(stringText, family, fontStyle, emSize, origin, format)  
   'Setzen Sie die Region-Eigenschaft des Steuerelements auf die Instanz  
   'der oben von Ihnen erstellten GraphicsPath-Klasse.  
   Dim format As StringFormat = StringFormat.GenericDefault  
CustomButton.Region = New Region(myGraphicsPath)  
End Sub  
// C#  
private void CustomButton__Paint(object sender,   
System.Windows.Forms.PaintEventArgs e)  
{  
   //Instanzieren Sie eine neue Instanz der GraphicsPath-Klasse.  
   System.Drawing.Drawing2D.GraphicsPath myGraphicsPath  = new   
System.Drawing.Drawing2D.GraphicsPath();  
   //Geben Sie eine Zeichenfolge an. Diese bestimmt die Form des Steuerelements.  
   string stringText = "Klick mich an!";  
   //Geben Sie die Schriftart für die Zeichenfolge an.  
   FontFamily family = new FontFamily("Arial");  
   //Geben Sie den Schriftschnitt für die Zeichenfolge an.  
   //Wandeln Sie die FontStyle-Enumeration in eine Ganzzahl um, damit   
   //die AddString-Methode mindestens zwei  
   //FontStyle-Mitglieder beim Erstellen der   
   //gewünschten Schriftart bilden kann.   
   int fontStyle = (int)FontStyle.Bold;  
   //Hier geben Sie die Höhe der Zeichenfolge an.  
   //Diese Ganzzahl stellt eine Seite eines Quadrats dar.  
   //Die von Ihnen angegebene Zeichenfolge wird innerhalb dieses Quadrats gezeichnet.  
   //Eine größere Ganzzahl vergrößert die Zeichenfolge,  
   //eine kleinere Ganzzahl verkleinert die Zeichenfolge.  
   int emSize = 35;  
   //Diese Stelle gibt den  
   //Textanfang an. Sie wird vom Rand des  
   //Steuerelements aus berechnet, nicht vom Formular.  
   PointF origin = new PointF(0, 0);  
   //Ein StringFormat-Objekt, das  
   //Informationen zur Textformatierung angibt, z.B.   
   //Zeilenabstand und Ausrichtung.  
   StringFormat format = new StringFormat(StringFormat.GenericDefault);  
   //Erstellen Sie mit der AddString-Methode die Zeichenfolge, deren  
   //Details Sie oben angegeben haben.  
   myGraphicsPath.AddString(stringText, family, fontStyle, emSize, origin, format);  
   //Setzen Sie die Region-Eigenschaft des Steuerelements auf die Instanz  
   //der oben von Ihnen erstellten GraphicsPath-Klasse.  
   CustomButton.Region = new Region(myGraphicsPath);  
}

Anmerkung: Denken Sie daran, dass die GraphicsPath-Klasse in Relation zum Steuerelement und nicht zum Formular zeichnet. Wenn Sie mit dem Zeichnen der Form an den Koordinaten (0,0) beginnen, wird sie unten links im Steuerelement platziert.

6.Erstellen Sie einen Ereignishandler für das Click-Ereignis der Schaltfläche. Schreiben Sie den entsprechenden Code, um die Hintergrundfarbe der Schaltfläche im Click-Ereignishandler zu ändern, um zu prüfen, ob die Standardfunktionen der Schaltfläche trotz der Änderungen, die Sie zur Laufzeit vorgenommen haben, noch vorhanden sind.

Wählen Sie im Feld Klassenname oben im Code-Editor CustomButton aus. Wählen Sie in der Dropdownliste Methodenname die Option Click aus.

7.Geben Sie einen ähnlichen wie den folgenden Code ein, um die BackColor-Eigenschaft der Schaltfläche zu ändern.
8.

' Visual Basic  
Private Sub CustomButton_Click(ByVal sender As System.Object, _  
ByVal e As System.EventArgs) Handles CustomButton.Click  
    CustomButton.BackColor = Color.BlanchedAlmond  
End Sub  
// C#  
private void CustomButton_Click(object sender, System.EventArgs e)  
{  
   CustomButton.BackColor = Color.BlanchedAlmond;  
}  

9.Speichern Sie die Anwendung, und starten Sie sie.

Beim Ausführen der Anwendung werden Sie sofort sehen, dass Ihre Schaltfläche keine rechteckige Form mehr hat, sondern in den Worten "Klick mich an!" angezeigt wird. (Falls die Schaltfläche nicht angezeigt wird, schließen Sie die Anwendung, und vergrößern Sie das Formular.) Außerdem ändert die Schaltfläche bei Anklicken ihre Farbe, vorausgesetzt, die Originalfunktionen der Schaltfläche sind noch vorhanden.

 

Weitere Schritte

Im oben aufgeführten Beispiel mit einer Instanz der GraphicsPath-Klasse haben Sie eine Zeichenfolge angegeben, die die wesentliche Form des Steuerelements bestimmt hat. Möglicherweise möchten Sie aber keine Steuerelemente in Textform, sondern in anderen geometrischen Formen (z.B. dreieckig oder rund) erstellen. Mit dem .NET Framework ist auch dies möglich.

An Stelle einer Zeichenfolge können Sie Formen verwenden, die im .NET Framework bereits vordefiniert wurden. Die Verwendung einer Kombination dieser Formen erlaubt Ihnen, das Aussehen Ihrer Steuerelemente in hohem Maß zu steuern.

Anmerkung: Die GraphicsPath-Klasse verfügt über Methoden zur Definition von Formen, die Sie verwenden können (z.B. Kurven, Bögen, Kreisdiagramme und Rechtecke). Im nachfolgenden Beispiel definiert der Code vier Ellipsen. Angewendet auf ein Steuerelement, z.B. eine Schaltfläche, sehen sie wie Augen aus. Probieren Sie doch einfach verschiedene Kombinationen anderer Formen aus, die in der GraphicsPath-Klasse definiert sind.

' Visual Basic  
Private Sub Button1_Paint(ByVal sender As Object, _  
ByVal e As System.Windows.Forms.PaintEventArgs) _  
Handles Button1.Paint  
   Dim myGraphicsPath As System.Drawing.Drawing2D.GraphicsPath = New _  
System.Drawing.Drawing2D.GraphicsPath()  
   myGraphicsPath.AddEllipse(New Rectangle(0, 0, 125, 125))  
   myGraphicsPath.AddEllipse(New Rectangle(75, 75, 20, 20))  
   myGraphicsPath.AddEllipse(New Rectangle(120, 0, 125, 125))  
   myGraphicsPath.AddEllipse(New Rectangle(145, 75, 20, 20))  
   'Ändern Sie die Hintergrundfarbe der Schaltfläche, damit sie besser  
   'sichtbar ist.  
   Button1.BackColor = Color.Chartreuse  
   Button1.Size = New System.Drawing.Size(256, 256)  
   Button1.Region = New Region(myGraphicsPath)  
   End Sub  
// C#  
private void button1_Paint(object sender,   
System.Windows.Forms.PaintEventArgs e)  
{  
   System.Drawing.Drawing2D.GraphicsPath myGraphicsPath  = new  
System.Drawing.Drawing2D.GraphicsPath();  
   myGraphicsPath.AddEllipse(new Rectangle(0, 0, 125, 125));  
   myGraphicsPath.AddEllipse(new Rectangle(75, 75, 20, 20));  
   myGraphicsPath.AddEllipse(new Rectangle(120, 0, 125, 125));  
   myGraphicsPath.AddEllipse(new Rectangle(145, 75, 20, 20));  
   //Ändern Sie die Hintergrundfarbe der Schaltfläche, damit sie besser  
   //sichtbar ist.  
   button1.BackColor = Color.Chartreuse;  
   button1.Size = new System.Drawing.Size(256, 256);  
   button1.Region = new Region(myGraphicsPath);  
}

Anmerkung: Dieser Code nutzt die Standardeinstellung der FillMode-Enumeration, die festlegt, wie das Innere einer geschlossenen Figur gefüllt und beschnitten wird. Weitere Informationen finden Sie unter "FillMode Enumeration".

Bitte beachten Sie auch, dass sich die Form-Klasse aus der System.Windows.Forms.Control-Klasse ableitet. Mit anderen Worten: Die Instanz des Formulars, das Ihnen der Windows Forms-Designer anbietet, ist im Grunde ein Steuerelement. Anstatt also mit der oben erläuterten "Bitmapbild"-Methode im Handumdrehen eine benutzerdefinierte Formularform zu erstellen, könnten Sie dafür auch eine Instanz der GraphicsPath-Klasse verwenden. Experimentieren Sie mit Instanzen der GraphicsPath-Klasse, um Ihrem Formular die verrücktesten Formen zu geben.

 

Schlussfolgerung

Wie Sie gesehen haben, lässt sich die Form von Formularen und Steuerelementen in Ihrer Anwendung unkompliziert anpassen. Für Formulare benötigen Sie lediglich eine Bilddatei mit der gewünschten Form für Ihr Formular. Steuerelemente erfordern die Angabe einer GraphicsPath-Klasse, die die Form des Steuerelements festlegt. Schrittweise haben Sie die Grundzüge zur Erstellung von Formularen und Steuerelementen mit benutzerdefinierten Formen kennen gelernt. Jetzt können Sie darauf aufbauen und Ihre eigenen angepassten Benutzeroberflächen erstellen.