Pinsel und gefüllte Formen in GDI+
Eine geschlossene Form, z. B. ein Rechteck oder ein Ellipse, besteht aus einer Kontur und einem Innenbereich. Die Kontur wird mit einem Stift gezeichnet, und das Innere wird mit einem Pinsel gefüllt. GDI+ bietet mehrere Pinselklassen zum Füllen des Innenbereichs geschlossener Formen: SolidBrush, HatchBrush, TextureBrush, LinearGradientBrush und PathGradientBrush. Alle diese Klassen erben von der Brush-Basisklasse. Die folgende Abbildung zeigt ein Rechteck, das mit einem Volltonpinsel gefüllt ist, und eine mit einem Schraffurpinsel gefüllte Ellipse.
Volltonpinsel
Um eine geschlossene Form zu füllen, benötigen Sie eine Instanz der Graphics-Klasse und einen Brush. Die Instanz der Graphics-Klasse bietet Methoden wie FillRectangle und FillEllipse, und Brush speichert Attribute der Füllung, z. B. Farbe und Muster. Das Brush-Objekt wird als eins der Argumente an die fill-Methode übergeben. Im folgenden Codebeispiel wird gezeigt, wie Sie eine Ellipse mit einer roten Volltonfarbe füllen.
SolidBrush mySolidBrush = new SolidBrush(Color.Red);
myGraphics.FillEllipse(mySolidBrush, 0, 0, 60, 40);
Dim mySolidBrush As New SolidBrush(Color.Red)
myGraphics.FillEllipse(mySolidBrush, 0, 0, 60, 40)
Hinweis
Im vorherigen Beispiel ist der Pinsel vom Typ SolidBrush, der von Brush erbt.
Schraffurpinsel
Wenn Sie eine Form mit einem Schraffurpinsel füllen, geben Sie eine Vordergrundfarbe, eine Hintergrundfarbe und eine Schraffurart an. Die Vordergrundfarbe ist die Farbe der Schraffur.
HatchBrush myHatchBrush =
new HatchBrush(HatchStyle.Vertical, Color.Blue, Color.Green);
Dim myHatchBrush As _
New HatchBrush(HatchStyle.Vertical, Color.Blue, Color.Green)
GDI+ bietet mehr als 50 Schraffurstile. Die in der folgenden Abbildung gezeigten drei Stile sind Horizontal, ForwardDiagonal und Cross.
Strukturpinsel
Mit einem Strukturpinsel können Sie eine Form mit einem Muster füllen, das in einer Bitmap gespeichert ist. Angenommen, das folgende Bild ist in einer Datenträgerdatei namens MyTexture.bmp
gespeichert.
Im folgenden Codebeispiel wird gezeigt, wie Sie eine Ellipse füllen, indem das in MyTexture.bmp
gespeicherte Bild wiederholt wird.
Image myImage = Image.FromFile("MyTexture.bmp");
TextureBrush myTextureBrush = new TextureBrush(myImage);
myGraphics.FillEllipse(myTextureBrush, 0, 0, 100, 50);
Dim myImage As Image = Image.FromFile("MyTexture.bmp")
Dim myTextureBrush As New TextureBrush(myImage)
myGraphics.FillEllipse(myTextureBrush, 0, 0, 100, 50)
Die folgende Abbildung zeigt die ausgefüllte Ellipse.
Farbverlaufspinsel
GDI+ bietet zwei Arten von Farbverlaufspinseln: linear und Pfad. Sie können einen linearen Farbverlaufspinsel verwenden, um eine Form mit einer Farbe zu füllen, die sich graduell ändert, während Sie horizontal, vertikal oder diagonal über die Form ziehen. Im folgenden Codebeispiel wird gezeigt, wie Sie eine Ellipse mit einem horizontalen Farbverlaufspinsel füllen, der sich vom linken Rand der Ellipse zum rechten Rand von Blau in Grün ändert.
LinearGradientBrush myLinearGradientBrush = new LinearGradientBrush(
myRectangle,
Color.Blue,
Color.Green,
LinearGradientMode.Horizontal);
myGraphics.FillEllipse(myLinearGradientBrush, myRectangle);
Dim myLinearGradientBrush As New LinearGradientBrush( _
myRectangle, _
Color.Blue, _
Color.Green, _
LinearGradientMode.Horizontal)
myGraphics.FillEllipse(myLinearGradientBrush, myRectangle)
Die folgende Abbildung zeigt die ausgefüllte Ellipse.
Ein Pfad-Farbverlaufspinsel kann so konfiguriert werden, dass sich die Farbe ändert, während Sie sich vom Mittelpunkt einer Form in Richtung des Rands bewegen.
Pfad-Farbverlaufspinsel sind sehr flexibel. Der Farbverlaufspinsel, der zum Füllen des Dreiecks in der folgenden Abbildung verwendet wird, ändert sich graduell von Rot in der Mitte in jede der drei anderen Farben bis zu den Scheitelpunkten.
Siehe auch
- System.Drawing.SolidBrush
- System.Drawing.Drawing2D.HatchBrush
- System.Drawing.TextureBrush
- System.Drawing.Drawing2D.LinearGradientBrush
- Linien, Kurven und Formen
- Vorgehensweise: Zeichnen eines ausgefüllten Rechtecks in Windows Forms
- Vorgehensweise: Zeichnen einer ausgefüllten Ellipse in Windows Forms
.NET Desktop feedback