Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Opmerking
De Microsoft Foundation Classes-bibliotheek (MFC) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.
Hiermee wordt een GDI-borstel (Windows Graphics Device Interface) ingekapseld.
Syntaxis
class CBrush : public CGdiObject
Leden
Openbare constructors
| Naam | Description |
|---|---|
CBrush::CBrush |
Maakt een CBrush object. |
Openbare methoden
| Naam | Description |
|---|---|
CBrush::CreateBrushIndirect |
Initialiseert een borstel met de stijl, kleur en het patroon dat is opgegeven in een LOGBRUSH structuur. |
CBrush::CreateDIBPatternBrush |
Initialiseert een borstel met een patroon dat is opgegeven door een apparaatonafhankelijke bitmap (DIB). |
CBrush::CreateHatchBrush |
Initialiseert een borstel met het opgegeven uitgebroed patroon en de opgegeven kleur. |
CBrush::CreatePatternBrush |
Initialiseert een borstel met een patroon dat is opgegeven door een bitmap. |
CBrush::CreateSolidBrush |
Initialiseert een borstel met de opgegeven effen kleur. |
CBrush::CreateSysColorBrush |
Hiermee maakt u een borstel die de standaardsysteemkleur is. |
CBrush::FromHandle |
Retourneert een aanwijzer naar een CBrush object wanneer een ingang aan een Windows-object HBRUSH wordt gegeven. |
CBrush::GetLogBrush |
Krijgt een LOGBRUSH structuur. |
Openbare operators
| Naam | Description |
|---|---|
CBrush::operator HBRUSH |
Retourneert de Windows-ingang die aan het CBrush object is gekoppeld. |
Opmerkingen
Als u een CBrush object wilt gebruiken, maakt u een CBrush object en geeft u dit door aan een CDC lidfunctie waarvoor een borstel is vereist.
Borstels kunnen effen, uitgebroed of gepatroont zijn.
Zie Grafische objecten voor meer informatieCBrush.
Overnamehiërarchie
CBrush
Requirements
Rubriek:afxwin.h
CBrush::CBrush
Maakt een CBrush object.
CBrush();
CBrush(COLORREF crColor);
CBrush(int nIndex, COLORREF crColor);
explicit CBrush(CBitmap* pBitmap);
Parameterwaarden
crColor
Hiermee geeft u de voorgrondkleur van de borstel op als RGB-kleur. Als de borstel is uitgebroed, geeft deze parameter de kleur van het luik aan.
nIndex
Hiermee geeft u de luikstijl van de borstel. Dit kan een van de volgende waarden zijn:
HS_BDIAGONALNeerwaarts luik (van links naar rechts) bij 45 gradenHS_CROSSHorizontale en verticale kruishaalHS_DIAGCROSSKruishakken op 45 gradenHS_FDIAGONALOpwaarts luik (van links naar rechts) op 45 gradenHS_HORIZONTALHorizontaal luikHS_VERTICALVerticaal luik
pBitmap
Wijst naar een CBitmap object dat een bitmap aangeeft waarmee de penseelverft.
Opmerkingen
CBrush heeft vier overbelaste constructors. De constructor zonder argumenten maakt een niet-geïnitialiseerd CBrush object dat moet worden geïnitialiseerd voordat het kan worden gebruikt.
Als u de constructor zonder argumenten gebruikt, moet u het resulterende CBrush object initialiseren met CreateSolidBrush, CreateHatchBrush, CreateBrushIndirect, of CreatePatternBrushCreateDIBPatternBrush. Als u een van de constructors gebruikt die argumenten gebruikt, is er geen verdere initialisatie nodig. De constructors met argumenten kunnen een uitzondering genereren als er fouten optreden, terwijl de constructor zonder argumenten altijd slaagt.
De constructor met één COLORREF parameter bouwt een effen kwast met de opgegeven kleur. De kleur geeft een RGB-waarde op en kan worden samengesteld met de RGB macro in WINDOWS.H.
De constructor met twee parameters bouwt een luikborstel. De nIndex parameter geeft de index van een uitgebroed patroon op. De crColor parameter geeft de kleur op.
De constructor met een CBitmap parameter bouwt een patroonborstel. De parameter identificeert een bitmap. De bitmap wordt ervan uitgegaan dat deze is gemaakt met behulp van CBitmap::CreateBitmap, CBitmap::CreateBitmapIndirectof CBitmap::CreateCompatibleBitmapCBitmap::LoadBitmap. De minimale grootte voor een bitmap die in een opvulpatroon moet worden gebruikt, is 8 pixels bij 8 pixels.
Example
// 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
Initialiseert een kwast met een stijl, kleur en patroon dat is opgegeven in een LOGBRUSH structuur.
BOOL CreateBrushIndirect(const LOGBRUSH* lpLogBrush);
Parameterwaarden
lpLogBrush
Verwijst naar een LOGBRUSH structuur die informatie over de borstel bevat.
Retourwaarde
Niet-nul als de functie is geslaagd; anders 0.
Opmerkingen
De borstel kan vervolgens worden geselecteerd als de huidige borstel voor elke apparaatcontext.
Een borstel die is gemaakt met een monochroom bitmap (1 vlak, 1 bit per pixel) wordt getekend met behulp van de huidige tekst- en achtergrondkleuren. Pixels die worden weergegeven door een bit die is ingesteld op 0, worden getekend met de huidige tekstkleur. Pixels die worden vertegenwoordigd door een bit die is ingesteld op 1, worden getekend met de huidige achtergrondkleur.
Example
// 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
Initialiseert een borstel met het patroon dat is opgegeven door een apparaatonafhankelijke bitmap (DIB).
BOOL CreateDIBPatternBrush(
HGLOBAL hPackedDIB,
UINT nUsage);
BOOL CreateDIBPatternBrush(
const void* lpPackedDIB,
UINT nUsage);
Parameterwaarden
hPackedDIB
Identificeert een globaal geheugenobject met een verpakte apparaatonafhankelijke bitmap (DIB).
nUsage
Hiermee geeft u op of de bmiColors[] velden van de BITMAPINFO gegevensstructuur (een deel van de 'verpakte DIB') expliciete RGB-waarden of indexen bevatten in het momenteel gerealiseerde logische palet. De parameter moet een van de volgende waarden zijn:
DIB_PAL_COLORSDe kleurentabel bestaat uit een matrix van 16-bits indexen.DIB_RGB_COLORSDe kleurentabel bevat letterlijke RGB-waarden.
lpPackedDIB
Verwijst naar een verpakte DIB die bestaat uit een BITMAPINFO structuur direct gevolgd door een matrix van bytes die de pixels van de bitmap definieert.
Retourwaarde
Niet-nul indien geslaagd; anders 0.
Opmerkingen
De borstel kan vervolgens worden geselecteerd voor elke apparaatcontext die rasterbewerkingen ondersteunt.
De twee versies verschillen in de manier waarop u de DIB verwerkt:
In de eerste versie krijgt u een ingang voor de DIB die u de Windows-functie
GlobalAllocaanroept om een blok van globaal geheugen toe te wijzen en vervolgens het geheugen te vullen met de verpakte DIB.In de tweede versie is het niet nodig om geheugen toe te
GlobalAllocwijzen voor de verpakte DIB.
Een verpakte DIB bestaat uit een BITMAPINFO gegevensstructuur direct gevolgd door de matrix van bytes die de pixels van de bitmap definieert. Bitmaps die worden gebruikt als opvulpatronen, moeten 8 pixels bij 8 pixels zijn. Als de bitmap groter is, maakt Windows een opvulpatroon met alleen de bits die overeenkomen met de eerste 8 rijen en 8 kolommen met pixels in de linkerbovenhoek van de bitmap.
Wanneer een toepassing een dib-patroonborstel met twee kleuren selecteert in een monochrome apparaatcontext, negeert Windows de kleuren die zijn opgegeven in de DIB en geeft in plaats daarvan het patroonborstel weer met behulp van de huidige tekst- en achtergrondkleuren van de apparaatcontext. Pixels die zijn toegewezen aan de eerste kleur (bij verschuiving 0 in de dib-kleurentabel) van de DIB worden weergegeven met behulp van de tekstkleur. Pixels die zijn toegewezen aan de tweede kleur (op offset 1 in de kleurentabel) worden weergegeven met behulp van de achtergrondkleur.
Zie de Windows SDK voor meer informatie over het gebruik van de volgende Windows-functies:
CreateDIBPatternBrush(Deze functie is alleen beschikbaar voor compatibiliteit met toepassingen die zijn geschreven voor versies van Windows ouder dan 3.0; gebruik deCreateDIBPatternBrushPtfunctie.)CreateDIBPatternBrushPt(Deze functie moet worden gebruikt voor Win32-toepassingen.)
Example
// 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
Initialiseert een borstel met het opgegeven uitgebroed patroon en de opgegeven kleur.
BOOL CreateHatchBrush(
int nIndex,
COLORREF crColor);
Parameterwaarden
nIndex
Hiermee geeft u de luikstijl van de borstel. Dit kan een van de volgende waarden zijn:
HS_BDIAGONALNeerwaarts luik (van links naar rechts) bij 45 gradenHS_CROSSHorizontale en verticale kruishaalHS_DIAGCROSSKruishakken op 45 gradenHS_FDIAGONALOpwaarts luik (van links naar rechts) op 45 gradenHS_HORIZONTALHorizontaal luikHS_VERTICALVerticaal luik
crColor
Hiermee geeft u de voorgrondkleur van de borstel op als een RGB-kleur (de kleur van de luiken). Zie COLORREF in de Windows SDK voor meer informatie.
Retourwaarde
Niet-nul indien geslaagd; anders 0.
Opmerkingen
De borstel kan vervolgens worden geselecteerd als de huidige borstel voor elke apparaatcontext.
Example
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
Initialiseert een borstel met een patroon dat is opgegeven door een bitmap.
BOOL CreatePatternBrush(CBitmap* pBitmap);
Parameterwaarden
pBitmap
Identificeert een bitmap.
Retourwaarde
Niet-nul indien geslaagd; anders 0.
Opmerkingen
De borstel kan vervolgens worden geselecteerd voor elke apparaatcontext die rasterbewerkingen ondersteunt. De bitmap die wordt geïdentificeerd doorpBitmap, wordt doorgaans geïnitialiseerd met behulp van de CBitmap::LoadBitmapCBitmap::CreateBitmapCBitmap::CreateBitmapIndirect, of CBitmap::CreateCompatibleBitmap functie.
Bitmaps die worden gebruikt als opvulpatronen, moeten 8 pixels bij 8 pixels zijn. Als de bitmap groter is, gebruikt Windows alleen de bits die overeenkomen met de eerste 8 rijen en kolommen van pixels in de linkerbovenhoek van de bitmap.
Een patroonborstel kan worden verwijderd zonder dat dit van invloed is op de bijbehorende bitmap. Dit betekent dat de bitmap kan worden gebruikt om een willekeurig aantal patroonborstels te maken.
Een penseel dat is gemaakt met behulp van een monochrome bitmap (1 kleurenvlak, 1 bit per pixel) wordt getekend met behulp van de huidige tekst- en achtergrondkleuren. Pixels die worden vertegenwoordigd door een bit die is ingesteld op 0, worden getekend met de huidige tekstkleur. Pixels die worden vertegenwoordigd door een bit die is ingesteld op 1, worden getekend met de huidige achtergrondkleur.
Zie de Windows SDK voor informatie over het gebruik van CreatePatternBrusheen Windows-functie.
Example
// 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
Initialiseert een borstel met een opgegeven effen kleur.
BOOL CreateSolidBrush(COLORREF crColor);
Parameterwaarden
crColor
Een COLORREF structuur die de kleur van de borstel aangeeft. De kleur geeft een RGB-waarde op en kan worden samengesteld met de RGB macro in WINDOWS.H.
Retourwaarde
Niet-nul indien geslaagd; anders 0.
Opmerkingen
De borstel kan vervolgens worden geselecteerd als de huidige borstel voor elke apparaatcontext.
Wanneer een toepassing klaar is met het penseel dat is gemaakt door CreateSolidBrush, moet het penseel uit de apparaatcontext worden geselecteerd.
Example
Zie het voorbeeld voor CBrush::CBrush.
CBrush::CreateSysColorBrush
Initialiseert een kwastkleur.
BOOL CreateSysColorBrush(int nIndex);
Parameterwaarden
nIndex
Hiermee geeft u een kleurindex. Deze waarde komt overeen met de kleur die wordt gebruikt om een van de 21 vensterelementen te schilderen. Zie GetSysColor in de Windows SDK voor een lijst met waarden.
Retourwaarde
Niet-nul indien geslaagd; anders 0.
Opmerkingen
De borstel kan vervolgens worden geselecteerd als de huidige borstel voor elke apparaatcontext.
Wanneer een toepassing klaar is met het penseel dat is gemaakt door CreateSysColorBrush, moet het penseel uit de apparaatcontext worden geselecteerd.
Example
// 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
Retourneert een aanwijzer naar een CBrush object wanneer een ingang aan een Windows-object HBRUSH wordt gegeven.
static CBrush* PASCAL FromHandle(HBRUSH hBrush);
Parameterwaarden
hBrush
HANDGREEP naar een Windows GDI-borstel.
Retourwaarde
Een aanwijzer naar een CBrush object als dit lukt; anders NULL.
Opmerkingen
Als er CBrush nog geen object aan de ingang is gekoppeld, wordt er een tijdelijk CBrush object gemaakt en gekoppeld. Dit tijdelijke CBrush object is alleen geldig tot de volgende keer dat de toepassing inactief is in de gebeurtenislus. Op dit moment worden alle tijdelijke grafische objecten verwijderd. Met andere woorden, het tijdelijke object is alleen geldig tijdens de verwerking van één vensterbericht.
Zie Afbeeldingsobjecten in de Windows SDK voor meer informatie over het gebruik van grafische objecten.
Example
Zie het voorbeeld voor CBrush::CBrush.
CBrush::GetLogBrush
Roep deze lidfunctie aan om de LOGBRUSH structuur op te halen.
int GetLogBrush(LOGBRUSH* pLogBrush);
Parameterwaarden
pLogBrush
Verwijst naar een LOGBRUSH structuur die informatie over de borstel bevat.
Retourwaarde
Als de functie slaagt en pLogBrush een geldige aanwijzer is, is de retourwaarde het aantal bytes dat in de buffer is opgeslagen.
Als de functie slaagt en pLogBrush is NULL, is de retourwaarde het aantal bytes dat nodig is om de informatie op te slaan die de functie in de buffer zou opslaan.
Als de functie mislukt, is de retourwaarde 0.
Opmerkingen
De LOGBRUSH structuur definieert de stijl, kleur en het patroon van een borstel.
Roep bijvoorbeeld GetLogBrush aan om de specifieke kleur of het patroon van een bitmap te vinden.
Example
// 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
Gebruik deze operator om de gekoppelde Windows GDI-ingang van het CBrush object op te halen.
operator HBRUSH() const;
Retourwaarde
Als dit lukt, wordt een ingang naar het Windows GDI-object vertegenwoordigd door het CBrush object; anders NULL.
Opmerkingen
Deze operator is een cast-operator die direct gebruik van een HBRUSH object ondersteunt.
Zie Afbeeldingsobjecten in de Windows SDK voor meer informatie over het gebruik van grafische objecten.
Example
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);
Zie ook
MFC-voorbeeld PROPDLG
CGdiObject klasse
Hiërarchiegrafiek
CBitmap klasse
CDC klasse