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.
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.
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.
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.
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.
Ein Pfadfarbverlaufspinsel kann so konfiguriert werden, dass die Farbe geändert wird, wenn Sie von der Mitte einer Abbildung zur Grenze wechseln.
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.