Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
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
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_BDIAGONALNach unten schlupfen (von links nach rechts) bei 45 GradHS_CROSSHorizontaler und vertikaler KreuzstrichHS_DIAGCROSSKreuzstrich bei 45 GradHS_FDIAGONALAufwärtslupfung (von links nach rechts) bei 45 GradHS_HORIZONTALHorizontale SchlupfbewegungHS_VERTICALVertikaler 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_COLORSDie Farbtabelle besteht aus einem Array von 16-Bit-Indizes.DIB_RGB_COLORSDie 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
GlobalAllocauf, 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 dieCreateDIBPatternBrushPtFunktion.)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_BDIAGONALNach unten schlupfen (von links nach rechts) bei 45 GradHS_CROSSHorizontaler und vertikaler KreuzstrichHS_DIAGCROSSKreuzstrich bei 45 GradHS_FDIAGONALAufwärtslupfung (von links nach rechts) bei 45 GradHS_HORIZONTALHorizontale SchlupfbewegungHS_VERTICALVertikaler 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