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 CBrush
finden Sie unter Graphic Objects.
Vererbungshierarchie
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 GradHS_CROSS
Horizontaler und vertikaler KreuzstrichHS_DIAGCROSS
Kreuzstrich bei 45 GradHS_FDIAGONAL
Aufwärtslupfung (von links nach rechts) bei 45 GradHS_HORIZONTAL
Horizontale SchlupfbewegungHS_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
, , CreatePatternBrush
oder 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::CreateBitmap
von , , CBitmap::CreateBitmapIndirect
, CBitmap::LoadBitmap
oder 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 dieCreateDIBPatternBrushPt
Funktion.)CreateDIBPatternBrushPt
(Diese Funktion sollte für Win32-basierte Anwendungen verwendet werden.)
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 GradHS_CROSS
Horizontaler und vertikaler KreuzstrichHS_DIAGCROSS
Kreuzstrich bei 45 GradHS_FDIAGONAL
Aufwärtslupfung (von links nach rechts) bei 45 GradHS_HORIZONTAL
Horizontale SchlupfbewegungHS_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::LoadBitmap
oder 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 CreatePatternBrush
einer 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 CreateSolidBrush
dem 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 CreateSysColorBrush
dem 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 NULL
der 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