Pinsel und gefüllte Formen

Eine geschlossene Abbildung, z. B. ein Rechteck oder eine Ellipse, besteht aus einer Kontur und einem Inneren. Die Kontur wird mit einem Stiftobjekt gezeichnet, und das Innere wird mit einem Brush-Objekt gefüllt. Windows GDI+ stellt mehrere Pinselklassen zum Füllen der Innenräume geschlossener Figuren bereit: SolidBrush, HatchBrush, TextureBrush, LinearGradientBrushund PathGradientBrush. Alle diese Klassen erben von der Brush-Klasse. Die folgende Abbildung zeigt ein Rechteck, das mit einem vollfarbigen Pinsel gefüllt ist, und eine Ellipse, die mit einem Schraffurpinsel gefüllt ist.

Abbildung eines blauen Rechtecks und einer Magenta-Ellipse, die mit einem blauen Schraffurmuster gefüllt ist

Vollkörperpinsel

Um eine geschlossene Form auszufüllen, benötigen Sie ein Graphics-Objekt und ein Brush-Objekt. Das Graphics-Objekt stellt Methoden wie FillRectangle und FillEllipsebereit, und das Brush-Objekt speichert Attribute der Füllung, z. B. Farbe und Muster. Die Adresse des Brush-Objekts wird als eines der Argumente an die fill-Methode übergeben. Im folgenden Beispiel wird eine Ellipse mit einer volltonigen roten Farbe gefüllt.

SolidBrush mySolidBrush(Color(255, 255, 0, 0));
myGraphics.FillEllipse(&mySolidBrush, 0, 0, 60, 40);

Beachten Sie, dass im vorherigen Beispiel der Pinsel vom Typ SolidBrushist, der von Brusherbt.

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(
   HatchStyleVertical, 
   Color(255, 0, 0, 255),
   Color(255, 0, 255, 0));

GDI+ stellt mehr als 50 Schraffurstile bereit, die in HatchStyleangegeben sind. Die drei in der folgenden Abbildung gezeigten Stile sind Horizontal, ForwardDiagonal und Cross.

Abbildung mit drei tealfarbenen Ellipsen, die jeweils einen anderen Schraffurstil haben

Texturpinsel

Mit einem Texturpinsel können Sie eine Form mit einem Muster füllen, das in einer Bitmap gespeichert ist. Angenommen, die folgende Abbildung wird in einer Datenträgerdatei namens MyTexture.bmp gespeichert.

Screenshot eines kleinen Quadrats, das mit verschiedenen Farben gefüllt ist

Im folgenden Beispiel wird eine Ellipse ausgefüllt, indem das in MyTexture.bmp gespeicherte Bild wiederholt wird.

Image myImage(L"MyTexture.bmp");
TextureBrush myTextureBrush(&myImage);
myGraphics.FillEllipse(&myTextureBrush, 0, 0, 100, 50);

Die folgende Abbildung zeigt die ausgefüllte Ellipse.

Abbildung mit einer Ellipse, die mit dem zuvor definierten Muster gefüllt ist

Farbverlaufspinsel

Sie können einen Farbverlaufspinsel verwenden, um eine Form mit einer Farbe zu füllen, die sich schrittweise von einem Teil der Form in einen anderen ändert. Beispielsweise ändert ein horizontaler Farbverlaufspinsel die Farbe, wenn Sie von der linken Seite einer Figur zur rechten Seite wechseln. Im folgenden Beispiel wird eine Ellipse mit einem horizontalen Farbverlaufspinsel gefüllt, der sich von blau in grün ändert, wenn Sie von der linken Seite der Ellipse zur rechten Seite wechseln.

LinearGradientBrush myLinearGradientBrush(
   myRect,
   Color(255, 0, 0, 255),
   Color(255, 0, 255, 0),
   LinearGradientModeHorizontal);
myGraphics.FillEllipse(&myLinearGradientBrush, myRect); 

Die folgende Abbildung zeigt die ausgefüllte Ellipse.

Abbildung mit einer Ellipse mit Farbverlaufsfüllung: blau auf der rechten Seite bis grün auf der linken Seite

Ein Pfadfarbverlaufspinsel kann so konfiguriert werden, dass die Farbe geändert wird, wenn Sie von der Mitte einer Figur zur Grenze wechseln.

Illustration einer Ellipse, die in der Mitte dunkelblau ist, schattiert in hellblau am Rand

Pfadfarbenpinsel sind recht flexibel. Der Farbverlaufspinsel, der zum Füllen des Dreiecks in der folgenden Abbildung verwendet wird, ändert sich allmählich von Rot in der Mitte in jede von drei verschiedenen Farben an den Scheitelpunkten.

Abbildung eines Dreiecks, das in der Mitte rot ist und an jedem Scheitelpunkt in einer anderen Farbe schattiert wird