Share via


CBrush-klasse

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

CObject

CGdiObject

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_BDIAGONAL Neerwaarts luik (van links naar rechts) bij 45 graden

  • HS_CROSS Horizontale en verticale kruishaal

  • HS_DIAGCROSS Kruishakken op 45 graden

  • HS_FDIAGONAL Opwaarts luik (van links naar rechts) op 45 graden

  • HS_HORIZONTAL Horizontaal luik

  • HS_VERTICAL Verticaal 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_COLORS De kleurentabel bestaat uit een matrix van 16-bits indexen.

  • DIB_RGB_COLORS De 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 GlobalAlloc aanroept 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 GlobalAlloc wijzen 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 de CreateDIBPatternBrushPt functie.)

  • CreateDIBPatternBrushPt (Deze functie moet worden gebruikt voor Win32-toepassingen.)

  • GlobalAlloc

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_BDIAGONAL Neerwaarts luik (van links naar rechts) bij 45 graden

  • HS_CROSS Horizontale en verticale kruishaal

  • HS_DIAGCROSS Kruishakken op 45 graden

  • HS_FDIAGONAL Opwaarts luik (van links naar rechts) op 45 graden

  • HS_HORIZONTAL Horizontaal luik

  • HS_VERTICAL Verticaal 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