Pinsel und gefüllte Formen

Eine geschlossene Figur wie ein Rechteck oder eine Ellipse besteht aus einer Kontur und einem Inneren. Die Kontur wird mit einem Pen-Objekt gezeichnet, und das Innere wird mit einem Brush-Objekt gefüllt. Windows GDI+ bietet mehrere Pinselklassen zum Füllen des Inneren geschlossener Figuren: SolidBrush, HatchBrush, TextureBrush, LinearGradientBrush und PathGradientBrush. Alle diese Klassen erben von der Brush-Klasse . Die folgende Abbildung zeigt ein Rechteck, das mit einem Volltonpinsel gefüllt ist, und eine mit einem Schraffurpinsel gefüllte Ellipse.

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

 

Volltonpinsel

Um eine geschlossene Form auszufüllen, benötigen Sie ein Graphics-Objekt und ein Brush-Objekt . Das Graphics-Objekt stellt Methoden wie FillRectangle und FillEllipse bereit, 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 durchgehenden 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 SolidBrush ist, 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(
   HatchStyleVertical, 
   Color(255, 0, 0, 255),
   Color(255, 0, 255, 0));

GDI+ bietet mehr als 50 Schraffurstile, die in HatchStyle angegeben sind. Die drei in der folgenden Abbildung gezeigten Stile sind Horizontal, ForwardDiagonal und Cross.

Abbildung mit drei tealfarbenen Auslassungspunkten, die jeweils einen anderen Schraffurstil aufweisen

 

Strukturpinsel

Mit einem Strukturpinsel können Sie eine Form mit einem Muster füllen, das in einer Bitmap gespeichert ist. Angenommen, die folgende Abbildung ist in einer Datenträgerdatei mit dem Namen 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 einer Ellipse, die mit dem zuvor definierten Muster gefüllt ist

 

Farbverlaufspinsel

Sie können einen Farbverlaufpinsel verwenden, um eine Form mit einer Farbe zu füllen, die sich allmählich von einem Teil der Form zu einem anderen ändert. Beispielsweise ändert ein horizontaler Farbverlaufpinsel die Farbe, wenn Sie von der linken Seite einer Abbildung 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 einer Ellipse mit einer Farbverlaufsfüllung: rechts blau 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 Abbildung zur Grenze wechseln.

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

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.

Abbildung eines Dreiecks, das in der Mitte rot ist und an jedem Scheitelpunkt eine andere Farbe aufweist