Freigeben über


CBrush-Klasse

Kapselt einen Pinsel der Windows GDI (Graphics Device Interface).

Syntax

class CBrush : public CGdiObject

Member

Öffentliche Konstruktoren

Name Beschreibung
CBrush::CBrush Erstellt ein CBrush-Objekt.

Öffentliche Methoden

Name Beschreibung
CBrush::CreateBrushIndirect Initialisiert einen Pinsel mit der in einer LOGBRUSH Struktur angegebenen Formatvorlage, Farbe und Muster.
CBrush::CreateDIBPatternBrush Initialisiert einen Pinsel mit einem Muster, das durch eine geräteunabhängige Bitmap (DIB) angegeben wird.
CBrush::CreateHatchBrush Initialisiert einen Pinsel mit dem angegebenen geschlüpften Muster und der angegebenen Farbe.
CBrush::CreatePatternBrush Initialisiert einen Pinsel mit einem Muster, das durch eine Bitmap angegeben wird.
CBrush::CreateSolidBrush Initialisiert einen Pinsel mit der angegebenen Volltonfarbe.
CBrush::CreateSysColorBrush Erstellt einen Pinsel, der die Standardsystemfarbe ist.
CBrush::FromHandle Gibt einen Zeiger auf ein CBrush Objekt zurück, wenn ein Handle auf ein Windows-Objekt HBRUSH übergeben wird.
CBrush::GetLogBrush Ruft eine LOGBRUSH Struktur ab.

Öffentliche Operatoren

Name Beschreibung
CBrush::operator HBRUSH Gibt das dem Objekt angefügte CBrush Windows-Handle zurück.

Hinweise

Um ein CBrush Objekt zu verwenden, erstellen Sie ein CBrush Objekt, und übergeben Sie es an eine beliebige CDC Memberfunktion, die einen Pinsel erfordert.

Pinsel können einfarbig, geschlüpft oder gemustert werden.

Weitere Informationen CBrushfinden Sie unter Graphic Objects.

Vererbungshierarchie

CObject

CGdiObject

CBrush

Anforderungen

Header: afxwin.h

CBrush::CBrush

Erstellt ein CBrush-Objekt.

CBrush();
CBrush(COLORREF crColor);
CBrush(int nIndex, COLORREF crColor);
explicit CBrush(CBitmap* pBitmap);

Parameter

crColor
Gibt die Vordergrundfarbe des Pinsels als RGB-Farbe an. Wenn der Pinsel geschlüpft ist, gibt dieser Parameter die Farbe des Schlupfens an.

nIndex
Gibt die Schlupfart des Pinsels an. Dabei kann es sich um einen der folgenden Werte handeln:

  • HS_BDIAGONAL Nach unten schlupfen (von links nach rechts) bei 45 Grad

  • HS_CROSS Horizontaler und vertikaler Kreuzstrich

  • HS_DIAGCROSS Kreuzstrich bei 45 Grad

  • HS_FDIAGONAL Aufwärtslupfung (von links nach rechts) bei 45 Grad

  • HS_HORIZONTAL Horizontale Schlupfbewegung

  • HS_VERTICAL Vertikaler Schlupf

pBitmap
Verweist auf ein CBitmap Objekt, das eine Bitmap angibt, mit der der Pinsel zeichnet.

Hinweise

CBrush verfügt über vier überladene Konstruktoren. Der Konstruktor ohne Argumente erstellt ein nicht initialisiertes CBrush Objekt, das initialisiert werden muss, bevor es verwendet werden kann.

Wenn Sie den Konstruktor ohne Argumente verwenden, müssen Sie das resultierende CBrush Objekt mit CreateSolidBrush, , CreateHatchBrush, CreateBrushIndirect, , CreatePatternBrushoder CreateDIBPatternBrush. Wenn Sie einen der Konstruktoren verwenden, die Argumente akzeptiert, ist keine weitere Initialisierung erforderlich. Die Konstruktoren mit Argumenten können eine Ausnahme auslösen, wenn Fehler auftreten, während der Konstruktor ohne Argumente immer erfolgreich ist.

Der Konstruktor mit einem einzelnen COLORREF Parameter erstellt einen vollfarbigen Pinsel mit der angegebenen Farbe. Die Farbe gibt einen RGB-Wert an und kann mit dem RGB Makro erstellt werden.WINDOWS.H

Der Konstruktor mit zwei Parametern erstellt einen Schlupfpinsel. Der nIndex Parameter gibt den Index eines geschlüpften Musters an. Der crColor Parameter gibt die Farbe an.

Der Konstruktor mit einem CBitmap Parameter erstellt einen gemusterten Pinsel. Der Parameter identifiziert eine Bitmap. Es wird davon ausgegangen, dass die Bitmap mithilfe CBitmap::CreateBitmapvon , , CBitmap::CreateBitmapIndirect, CBitmap::LoadBitmapoder CBitmap::CreateCompatibleBitmap. Die Mindestgröße für eine Bitmap, die in einem Füllmuster verwendet werden soll, beträgt 8 x 8 Pixel.

Beispiel

// CBrush::CBrush.
CBrush brush1;                           // Must initialize!
brush1.CreateSolidBrush(RGB(0, 0, 255)); // Blue brush.

CRect rc;
GetClientRect(&rc);
ScreenToClient(&rc);

// Save original brush.
CBrush *pOrigBrush = (CBrush *)pDC->SelectObject(&brush1);

// Paint upper left corner with blue brush.
pDC->Rectangle(0, 0, rc.Width() / 2, rc.Height() / 2);

// These constructors throw resource exceptions.
try
{
   // CBrush::CBrush(COLORREF crColor)
   CBrush brush2(RGB(255, 0, 0)); // Solid red brush.

   // CBrush::CBrush(int nIndex, COLORREF crColor)
   // Hatched green brush.
   CBrush brush3(HS_DIAGCROSS, RGB(0, 255, 0));

   // CBrush::CBrush(CBitmap* pBitmap)
   CBitmap bmp;
   // Load a resource bitmap.
   bmp.LoadBitmap(IDB_BRUSH);
   CBrush brush4(&bmp);

   pDC->SelectObject(&brush2);

   // Paint upper right corner with red brush.
   pDC->Rectangle(rc.Width() / 2, 0, rc.Width(),
                  rc.Height() / 2);

   pDC->SelectObject(&brush3);

   // Paint lower left corner with green hatched brush.
   pDC->Rectangle(0, rc.Height() / 2, rc.Width() / 2,
                  rc.Height());

   pDC->SelectObject(&brush4);

   // Paint lower right corner with resource brush.
   pDC->Rectangle(rc.Width() / 2, rc.Height() / 2,
                  rc.Width(), rc.Height());
}
catch (CResourceException *e)
{
   e->ReportError();
   e->Delete();
}

// Reselect original brush into device context.
pDC->SelectObject(pOrigBrush);

CBrush::CreateBrushIndirect

Initialisiert einen Pinsel mit einer Formatvorlage, Farbe und einem Muster, die in einer LOGBRUSH Struktur angegeben sind.

BOOL CreateBrushIndirect(const LOGBRUSH* lpLogBrush);

Parameter

lpLogBrush
Verweist auf eine LOGBRUSH Struktur, die Informationen zum Pinsel enthält.

Rückgabewert

Ist ungleich null (0), wenn die Funktion erfolgreich ausgeführt wird, andernfalls null (0).

Hinweise

Der Pinsel kann anschließend als aktueller Pinsel für jeden Gerätekontext ausgewählt werden.

Ein Pinsel, der mit einer monochromen Bitmap (1 Ebene, 1 Bit pro Pixel) erstellt wird, wird mit den aktuellen Text- und Hintergrundfarben gezeichnet. Pixel, die durch einen Bitsatz auf 0 dargestellt werden, werden mit der aktuellen Textfarbe gezeichnet. Pixel, die durch einen Bitsatz auf 1 dargestellt werden, werden mit der aktuellen Hintergrundfarbe gezeichnet.

Beispiel

// Initialize a LOGBRUSH structure.
LOGBRUSH logBrush;
logBrush.lbStyle = BS_HATCHED;
logBrush.lbColor = RGB(0, 192, 192);
logBrush.lbHatch = HS_CROSS;

// Declare an uninitialized CBrush ...
CBrush brush;
// ... and initialize it with the LOGBRUSH.
brush.CreateBrushIndirect(&logBrush);

// Select the brush (and perhaps a pen) into
// the device context.
CBrush *pOldBrush = (CBrush *)pDC->SelectObject(&brush);
CPen *pOldPen = (CPen *)pDC->SelectStockObject(BLACK_PEN);

// Have fun!
pDC->Pie(CRect(100, 100, 300, 300), CPoint(0, 0), CPoint(50, 200));

// Restore the original device context objects.
pDC->SelectObject(pOldBrush);
pDC->SelectObject(pOldPen);

CBrush::CreateDIBPatternBrush

Initialisiert einen Pinsel mit dem Muster, das durch eine geräteunabhängige Bitmap (DIB) angegeben wird.

BOOL CreateDIBPatternBrush(
    HGLOBAL hPackedDIB,
    UINT nUsage);

BOOL CreateDIBPatternBrush(
    const void* lpPackedDIB,
    UINT nUsage);

Parameter

hPackedDIB
Identifiziert ein globales Speicherobjekt, das eine verpackte geräteunabhängige Bitmap (DIB) enthält.

nUsage
Gibt an, ob die bmiColors[] Felder der BITMAPINFO Datenstruktur (ein Teil des "verpackten DIB") explizite RGB-Werte oder Indizes in der aktuell realisierten logischen Palette enthalten. Der Parameter muss einen der folgenden Werte aufweisen:

  • DIB_PAL_COLORS Die Farbtabelle besteht aus einem Array von 16-Bit-Indizes.

  • DIB_RGB_COLORS Die Farbtabelle enthält Literal-RGB-Werte.

lpPackedDIB
Verweist auf ein verpacktes DIB, das aus einer BITMAPINFO Struktur besteht, die unmittelbar auf ein Bytearray folgt, das die Pixel der Bitmap definiert.

Rückgabewert

Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).

Hinweise

Der Pinsel kann anschließend für jeden Gerätekontext ausgewählt werden, der Rastervorgänge unterstützt.

Die beiden Versionen unterscheiden sich in der Art und Weise, wie Sie die DIB behandeln:

  • In der ersten Version rufen Sie zum Abrufen eines Handles für die DIB die Windows-Funktion GlobalAlloc auf, um einen Block des globalen Speichers zuzuweisen und dann den Speicher mit dem verpackten DIB auszufüllen.

  • In der zweiten Version ist es nicht erforderlich GlobalAlloc , Speicher für das verpackte DIB zuzuweisen.

Ein verpacktes DIB besteht aus einer BITMAPINFO Datenstruktur, die unmittelbar auf das Bytearray folgt, das die Pixel der Bitmap definiert. Bitmaps, die als Füllmuster verwendet werden, sollten 8 x 8 Pixel betragen. Wenn die Bitmap größer ist, erstellt Windows ein Füllmuster mit nur den Bits, die den ersten 8 Zeilen und 8 Spalten von Pixeln in der oberen linken Ecke der Bitmap entsprechen.

Wenn eine Anwendung einen zweifarbigen DIB-Musterpinsel in einen monochromen Gerätekontext auswählt, ignoriert Windows die im DIB angegebenen Farben und zeigt stattdessen den Musterpinsel mit den aktuellen Text- und Hintergrundfarben des Gerätekontexts an. Pixel, die der ersten Farbe (bei Offset 0 in der DIB-Farbtabelle) des DIB zugeordnet sind, werden mithilfe der Textfarbe angezeigt. Pixel, die der zweiten Farbe (bei Offset 1 in der Farbtabelle) zugeordnet sind, werden mithilfe der Hintergrundfarbe angezeigt.

Informationen zur Verwendung der folgenden Windows-Funktionen finden Sie im Windows SDK:

  • CreateDIBPatternBrush (Diese Funktion wird nur zur Kompatibilität mit Anwendungen bereitgestellt, die für Versionen von Windows vor 3.0 geschrieben wurden; verwenden Sie die CreateDIBPatternBrushPt Funktion.)

  • CreateDIBPatternBrushPt (Diese Funktion sollte für Win32-basierte Anwendungen verwendet werden.)

  • GlobalAlloc

Beispiel

// Resource handle to bitmap.
HRSRC hRes;
// Global handles to bitmap resource.
HGLOBAL hData;
void *hLockedData;
CBrush brush;

// Find the resource handle.
hRes = ::FindResource(AfxGetResourceHandle(),
                      MAKEINTRESOURCE(IDB_BRUSH), RT_BITMAP);
if (hRes != NULL)
{
   // Lock and Load (or Load and Lock).
   if (((hData = ::LoadResource(AfxGetResourceHandle(),
                                hRes)) != NULL) &&
       ((hLockedData = ::LockResource(hData)) != NULL))
   {
      // Initialize the brush.
      brush.CreateDIBPatternBrush((const void *)hLockedData,
                                  DIB_RGB_COLORS);

      // Select the brush into the device context.
      CBrush *pOldBrush = pDC->SelectObject(&brush);

      // Draw.
      pDC->Rectangle(50, 50, 200, 200);

      // Restore the original device context.
      pDC->SelectObject(pOldBrush);

      // Free the resource.
      ::FreeResource(hLockedData);
   }
}

CBrush::CreateHatchBrush

Initialisiert einen Pinsel mit dem angegebenen geschlüpften Muster und der angegebenen Farbe.

BOOL CreateHatchBrush(
    int nIndex,
    COLORREF crColor);

Parameter

nIndex
Gibt die Schlupfart des Pinsels an. Dabei kann es sich um einen der folgenden Werte handeln:

  • HS_BDIAGONAL Nach unten schlupfen (von links nach rechts) bei 45 Grad

  • HS_CROSS Horizontaler und vertikaler Kreuzstrich

  • HS_DIAGCROSS Kreuzstrich bei 45 Grad

  • HS_FDIAGONAL Aufwärtslupfung (von links nach rechts) bei 45 Grad

  • HS_HORIZONTAL Horizontale Schlupfbewegung

  • HS_VERTICAL Vertikaler Schlupf

crColor
Gibt die Vordergrundfarbe des Pinsels als RGB-Farbe (die Farbe der Schlupfen) an. Weitere Informationen finden Sie COLORREF im Windows SDK.

Rückgabewert

Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).

Hinweise

Der Pinsel kann anschließend als aktueller Pinsel für jeden Gerätekontext ausgewählt werden.

Beispiel

CBrush brush;
brush.CreateHatchBrush(HS_BDIAGONAL, RGB(255, 0, 0));

CBrush *pOldBrush;
CPen *pOldPen;

pOldBrush = (CBrush *)pDC->SelectObject(&brush);
pOldPen = (CPen *)pDC->SelectStockObject(NULL_PEN);
pDC->Ellipse(CRect(50, 50, 250, 250));

pDC->SelectObject(pOldBrush);
pDC->SelectObject(pOldPen);

CBrush::CreatePatternBrush

Initialisiert einen Pinsel mit einem Muster, das durch eine Bitmap angegeben wird.

BOOL CreatePatternBrush(CBitmap* pBitmap);

Parameter

pBitmap
Identifiziert eine Bitmap.

Rückgabewert

Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).

Hinweise

Der Pinsel kann anschließend für jeden Gerätekontext ausgewählt werden, der Rastervorgänge unterstützt. Die durch pBitmap diese Bitmap identifizierte Bitmap wird in der Regel mithilfe der CBitmap::CreateBitmap, CBitmap::CreateBitmapIndirect, , CBitmap::LoadBitmapoder CBitmap::CreateCompatibleBitmap Funktion initialisiert.

Bitmaps, die als Füllmuster verwendet werden, sollten 8 x 8 Pixel betragen. Wenn die Bitmap größer ist, verwendet Windows nur die Bits, die den ersten 8 Zeilen und Spalten von Pixeln in der oberen linken Ecke der Bitmap entsprechen.

Ein Musterpinsel kann gelöscht werden, ohne dass sich dies auf die zugeordnete Bitmap auswirkt. Dies bedeutet, dass die Bitmap verwendet werden kann, um eine beliebige Anzahl von Musterpinsel zu erstellen.

Ein Pinsel, der mit einer monochromen Bitmap (1 Farbebene, 1 Bit pro Pixel) erstellt wird, wird mit den aktuellen Text- und Hintergrundfarben gezeichnet. Pixel, die durch einen Bitsatz auf 0 dargestellt werden, werden mit der aktuellen Textfarbe gezeichnet. Pixel, die durch einen Bitsatz auf 1 dargestellt werden, werden mit der aktuellen Hintergrundfarbe gezeichnet.

Informationen zur Verwendung CreatePatternBrusheiner Windows-Funktion finden Sie im Windows SDK.

Beispiel

// Create a hatched bit pattern.
WORD HatchBits[8] = {0x11, 0x22, 0x44, 0x88, 0x11,
                     0x22, 0x44, 0x88};

// Use the bit pattern to create a bitmap.
CBitmap bm;
bm.CreateBitmap(8, 8, 1, 1, HatchBits);

// Create a pattern brush from the bitmap.
CBrush brush;
brush.CreatePatternBrush(&bm);

// Select the brush into a device context, and draw.
CBrush *pOldBrush = (CBrush *)pDC->SelectObject(&brush);
pDC->RoundRect(CRect(50, 50, 200, 200), CPoint(10, 10));

// Restore the original brush.
pDC->SelectObject(pOldBrush);

CBrush::CreateSolidBrush

Initialisiert einen Pinsel mit einer angegebenen Volltonfarbe.

BOOL CreateSolidBrush(COLORREF crColor);

Parameter

crColor
Eine COLORREF Struktur, die die Farbe des Pinsels angibt. Die Farbe gibt einen RGB-Wert an und kann mit dem RGB Makro erstellt werden.WINDOWS.H

Rückgabewert

Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).

Hinweise

Der Pinsel kann anschließend als aktueller Pinsel für jeden Gerätekontext ausgewählt werden.

Wenn eine Anwendung die Verwendung des von CreateSolidBrushdem erstellten Pinsels abgeschlossen hat, sollte sie den Pinsel aus dem Gerätekontext auswählen.

Beispiel

Ein Beispiel hierfür finden Sie unter CBrush::CBrush.

CBrush::CreateSysColorBrush

Initialisiert eine Pinselfarbe.

BOOL CreateSysColorBrush(int nIndex);

Parameter

nIndex
Gibt einen Farbindex an. Dieser Wert entspricht der Farbe, die zum Zeichnen eines der 21 Fensterelemente verwendet wird. Eine Liste der Werte finden Sie GetSysColor im Windows SDK.

Rückgabewert

Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).

Hinweise

Der Pinsel kann anschließend als aktueller Pinsel für jeden Gerätekontext ausgewählt werden.

Wenn eine Anwendung die Verwendung des von CreateSysColorBrushdem erstellten Pinsels abgeschlossen hat, sollte sie den Pinsel aus dem Gerätekontext auswählen.

Beispiel

// Declare a CBrush and initialize to a system color.
CBrush brush;
brush.CreateSysColorBrush(COLOR_BTNFACE);

// Select the brush into the device context.
CBrush *pOldBrush = (CBrush *)pDC->SelectObject(&brush);

// Draw.
CRect rect(50, 50, 150, 150);
pDC->Rectangle(rect);

// Reselect the original brush.
pDC->SelectObject(pOldBrush);

CBrush::FromHandle

Gibt einen Zeiger auf ein CBrush Objekt zurück, wenn ein Handle auf ein Windows-Objekt HBRUSH übergeben wird.

static CBrush* PASCAL FromHandle(HBRUSH hBrush);

Parameter

hBrush
HANDLE zu einem Windows GDI-Pinsel.

Rückgabewert

Ein Zeiger auf ein CBrush Objekt bei erfolgreicher Ausführung; andernfalls NULL.

Hinweise

Wenn ein CBrush Objekt noch nicht an das Handle angefügt ist, wird ein temporäres CBrush Objekt erstellt und angefügt. Dieses temporäre CBrush Objekt ist nur gültig, bis die Anwendung das nächste Mal leerlaufzeit in der Ereignisschleife hat. Derzeit werden alle temporären Grafikobjekte gelöscht. Das temporäre Objekt ist also nur während der Verarbeitung einer Fenstermeldung gültig.

Weitere Informationen zur Verwendung von Grafikobjekten finden Sie unter "Grafikobjekte " im Windows SDK.

Beispiel

Sehen Sie sich das Beispiel für CBrush::CBrush an.

CBrush::GetLogBrush

Rufen Sie diese Memberfunktion auf, um die LOGBRUSH Struktur abzurufen.

int GetLogBrush(LOGBRUSH* pLogBrush);

Parameter

pLogBrush
Verweist auf eine LOGBRUSH Struktur, die Informationen zum Pinsel enthält.

Rückgabewert

Wenn die Funktion erfolgreich ausgeführt wird und pLogBrush ein gültiger Zeiger ist, ist der Rückgabewert die Anzahl der im Puffer gespeicherten Bytes.

Wenn die Funktion erfolgreich ist und pLogBrush ist, ist NULLder Rückgabewert die Anzahl der Bytes, die zum Speichern der Informationen erforderlich sind, die die Funktion im Puffer speichern würde.

Wenn die Funktion fehlschlägt, lautet der Rückgabewert 0.

Hinweise

Die LOGBRUSH Struktur definiert den Stil, die Farbe und das Muster eines Pinsels.

Rufen Sie beispielsweise auf GetLogBrush , um der bestimmten Farbe oder dem Muster einer Bitmap zu entsprechen.

Beispiel

// Example for CBrush::GetLogBrush
LOGBRUSH logbrush;
brushExisting.GetLogBrush(&logbrush);
CBrush brushOther(logbrush.lbColor);

// Another example
// Declare a LOGBRUSH
LOGBRUSH logBrush;

// Using a bitmap for this example.
// The bitmap should be a project resource.
CBitmap bm;
bm.LoadBitmap(IDB_BRUSH);

try
{
   // Create a brush
   CBrush brush1(&bm);

   // Use GetLogBrush to fill the LOGBRUSH structure
   brush1.GetLogBrush(&logBrush);

   // Create a second brush using the LOGBRUSH data
   CBrush brush2;
   brush2.CreateBrushIndirect(&logBrush);

   // Use the first brush
   CBrush *pOldBrush = (CBrush *)pDC->SelectObject(&brush1);
   pDC->Rectangle(CRect(50, 50, 150, 150));

   // The second brush has the specified characteristics
   // of the first brush
   pDC->SelectObject(&brush2);
   pDC->Ellipse(200, 50, 300, 150);

   // Reselect the original brush
   pDC->SelectObject(pOldBrush);
}
catch (CResourceException *e)
{
   e->ReportError();
   e->Delete();
}

CBrush::operator HBRUSH

Verwenden Sie diesen Operator, um das angefügte Windows GDI-Handle des CBrush Objekts abzurufen.

operator HBRUSH() const;

Rückgabewert

Bei erfolgreicher Ausführung ein Handle für das Windows GDI-Objekt, das durch das CBrush Objekt dargestellt wird; andernfalls NULL.

Hinweise

Dieser Operator ist ein Umwandlungsoperator, der die direkte Verwendung eines HBRUSH Objekts unterstützt.

Weitere Informationen zur Verwendung von Grafikobjekten finden Sie unter "Grafikobjekte " im Windows SDK.

Beispiel

RECT rc = {50, 50, 200, 200};

Rectangle(pDC->GetSafeHdc(), rc.left, rc.top, rc.right, rc.bottom);

// The Win32 call to FillRect requires an HBRUSH.
// The HBRUSH operator casts the CBrush object
// to the required type.
CBrush brush;
brush.CreateSysColorBrush(COLOR_BTNFACE);
FillRect(pDC->GetSafeHdc(), &rc, (HBRUSH)brush);

Siehe auch

MFC-Beispiel PROPDLG
CGdiObject Klasse
Hierarchiediagramm
CBitmap Klasse
CDC Klasse