Megosztás a következőn keresztül:


CBrush osztály

Megjegyzés:

A Microsoft Foundation Classes (MFC) könyvtár továbbra is támogatott. A továbbiakban azonban nem adunk hozzá funkciókat, és nem frissítjük a dokumentációt.

Beágyaz egy Windows grafikuseszköz-kezelőfelületet (GDI) kefével.

Szemantika

class CBrush : public CGdiObject

Tagok

Nyilvános konstruktorok

Név Description
CBrush::CBrush Egy CBrush objektumot hoz létre.

Nyilvános metódusok

Név Description
CBrush::CreateBrushIndirect Inicializál egy ecsetet a szerkezetben LOGBRUSH megadott stílussal, színnel és mintával.
CBrush::CreateDIBPatternBrush Inicializál egy kefét egy eszközfüggetlen bitkép (DIB) által megadott mintával.
CBrush::CreateHatchBrush Inicializál egy ecsetet a megadott kikelt mintával és színnel.
CBrush::CreatePatternBrush Inicializál egy ecsetet egy bittérkép által megadott mintával.
CBrush::CreateSolidBrush Inicializál egy ecsetet a megadott szilárd színnel.
CBrush::CreateSysColorBrush Létrehoz egy ecsetet, amely az alapértelmezett rendszerszín.
CBrush::FromHandle Mutatót ad vissza egy CBrush objektumhoz, ha egy Windows-objektumhoz HBRUSH fogópontot ad.
CBrush::GetLogBrush Szerkezetet LOGBRUSH kap.

Nyilvános operátorok

Név Description
CBrush::operator HBRUSH Az objektumhoz csatolt Windows-leírót CBrush adja vissza.

Megjegyzések

Objektum használatához CBrush hozzon létre egy CBrush objektumot, és adja át bármely CDC olyan tagfüggvénynek, amely ecsetet igényel.

A kefe lehet szilárd, kikelt vagy mintás.

További információ: CBrushGrafikus objektumok.

Öröklési hierarchia

CObject

CGdiObject

CBrush

Requirements

Fejléc:afxwin.h

CBrush::CBrush

Egy CBrush objektumot hoz létre.

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

Paraméterek

crColor
Az ecset előtérszínét adja meg RGB-színként. Ha a kefe kikelt, ez a paraméter határozza meg a keltető színét.

nIndex
Megadja az ecset keltetőstílusát. Az alábbi értékek bármelyike lehet:

  • HS_BDIAGONAL Lefelé (balról jobbra) 45 fokon

  • HS_CROSS Vízszintes és függőleges keresztfát

  • HS_DIAGCROSS Crosshatch 45 fokon

  • HS_FDIAGONAL Felfelé (balról jobbra) 45 fokon

  • HS_HORIZONTAL Vízszintes nyílás

  • HS_VERTICAL Függőleges nyílás

pBitmap
Egy olyan objektumra mutat CBitmap , amely egy bitképet határoz meg, amellyel az ecset fest.

Megjegyzések

CBrush négy túlterhelt konstruktorral rendelkezik. Az argumentumok nélküli konstruktor egy nem inicializált CBrush objektumot hoz létre, amelyet használat előtt inicializálni kell.

Ha argumentumok nélkül használja a konstruktort, inicializálnia kell a kapott CBrush objektumot a következővel CreateSolidBrush: , CreateHatchBrush, CreateBrushIndirect, CreatePatternBrushvagy CreateDIBPatternBrush. Ha az argumentumokat tartalmazó konstruktorok egyikét használja, akkor nincs szükség további inicializálásra. Az argumentumokkal rendelkező konstruktorok kivételt okozhatnak hibák esetén, míg az argumentumokat nem tartalmazó konstruktorok mindig sikeresek lesznek.

Az egyetlen COLORREF paraméterrel rendelkező konstruktor egy szilárd kefét hoz létre a megadott színnel. A szín egy RGB-értéket ad meg, és a makróval is létrehozható a RGB következőben WINDOWS.H: .

A két paraméterrel rendelkező konstruktor egy keltetőkefét hoz létre. A nIndex paraméter egy kikelt minta indexét adja meg. A crColor paraméter megadja a színt.

A paraméterrel rendelkező CBitmap konstruktor mintás kefét hoz létre. A paraméter egy bitképet azonosít. A bitképet a rendszer feltételezi, hogy CBitmap::CreateBitmapaz , , CBitmap::LoadBitmapCBitmap::CreateBitmapIndirectvagy CBitmap::CreateCompatibleBitmap. A kitöltési mintában használandó bitképek minimális mérete 8 képpont és 8 képpont.

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

Inicializál egy kefét egy struktúrában LOGBRUSH megadott stílussal, színnel és mintával.

BOOL CreateBrushIndirect(const LOGBRUSH* lpLogBrush);

Paraméterek

lpLogBrush
LOGBRUSH Az ecsettel kapcsolatos információkat tartalmazó szerkezetre mutat.

Visszaadott érték

Nonzero, ha a függvény sikeres; egyéb esetben 0.

Megjegyzések

Az kefét később bármilyen eszközkörnyezet aktuális kefeként választhatja ki.

A monokróm (1 sík, képpontonként 1 bit) bitkép használatával létrehozott ecsetet a rendszer az aktuális szöveg és háttérszínek használatával rajzolja meg. A 0-ra beállított bit által képviselt képpontok az aktuális szövegszínnel lesznek rajzolva. Az 1-nek beállított bit által képviselt képpontok az aktuális háttérszínnel lesznek rajzolva.

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

Inicializál egy kefét egy eszközfüggetlen bitkép (DIB) által megadott mintával.

BOOL CreateDIBPatternBrush(
    HGLOBAL hPackedDIB,
    UINT nUsage);

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

Paraméterek

hPackedDIB
Egy csomagolt eszközfüggetlen bitképet (DIB) tartalmazó globális memóriaobjektumot azonosít.

nUsage
Megadja, hogy az bmiColors[]BITMAPINFO adatstruktúra mezői (a "csomagolt DIB" része) explicit RGB-értékeket vagy indexeket tartalmaznak-e a jelenleg realizált logikai palettán. A paraméternek a következő értékek egyikének kell lennie:

  • DIB_PAL_COLORS A színtábla egy 16 bites indexekből álló tömbből áll.

  • DIB_RGB_COLORS A színtábla literális RGB-értékeket tartalmaz.

lpPackedDIB
Egy csomagolt DIB-ra mutat, amely azonnal egy BITMAPINFO szerkezetből áll, amelyet a bitkép képpontjait meghatározó bájtok tömbje követ.

Visszaadott érték

Nonzero, ha sikeres; egyéb esetben 0.

Megjegyzések

Az ecset ezután bármely olyan eszközkörnyezethez kiválasztható, amely támogatja a raszteres műveleteket.

A két verzió a DIB kezelésének módjában különbözik:

  • Az első verzióban a DIB leírójának beszerzéséhez hívja meg a Windows GlobalAlloc függvényt, hogy lefoglaljon egy globális memóriablokkot, majd töltse ki a memóriát a csomagolt DIB-vel.

  • A második verzióban nem szükséges meghívni GlobalAlloc a csomagolt DIB memóriájának lefoglalását.

A csomagolt DIB-k egy BITMAPINFO olyan adatstruktúrából állnak, amelyet a bitkép képpontjait meghatározó bájtok tömbje követ. A kitöltési mintákként használt bitképeknek 8 képpontnak és 8 képpontnak kell lenniük. Ha a bitkép nagyobb, a Windows csak a bitkép bal felső sarkában lévő első 8 sornak és 8 képpontoszlopnak megfelelő bitekkel hoz létre kitöltési mintát.

Amikor egy alkalmazás kétszínű DIB-mintakefét választ egy monokróm eszközkörnyezetbe, a Windows figyelmen kívül hagyja a DIB-ben megadott színeket, és ehelyett az eszközkörnyezet aktuális szöveg- és háttérszíneit használva jeleníti meg a mintaecsetet. A DIB első színére leképezett képpontok (a DIB színtáblázatában 0 eltoláskor) a szöveg színével jelennek meg. A második színre leképezett képpontok (a színtáblázat 1. eltolásánál) a háttérszín használatával jelennek meg.

Az alábbi Windows-függvények használatáról a Windows SDK-ból tájékozódhat:

  • CreateDIBPatternBrush (Ez a függvény csak a Windows 3.0-nál korábbi verzióihoz írt alkalmazásokkal való kompatibilitás érdekében érhető el; használja a függvényt CreateDIBPatternBrushPt .)

  • CreateDIBPatternBrushPt (Ezt a függvényt Win32-alapú alkalmazásokhoz kell használni.)

  • 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

Inicializál egy ecsetet a megadott kikelt mintával és színnel.

BOOL CreateHatchBrush(
    int nIndex,
    COLORREF crColor);

Paraméterek

nIndex
Megadja az ecset keltetőstílusát. Az alábbi értékek bármelyike lehet:

  • HS_BDIAGONAL Lefelé (balról jobbra) 45 fokon

  • HS_CROSS Vízszintes és függőleges keresztfát

  • HS_DIAGCROSS Crosshatch 45 fokon

  • HS_FDIAGONAL Felfelé (balról jobbra) 45 fokon

  • HS_HORIZONTAL Vízszintes nyílás

  • HS_VERTICAL Függőleges nyílás

crColor
Az ecset előtérszínét adja meg RGB-színként (a nyílások színét). További COLORREF információt a Windows SDK-ban talál.

Visszaadott érték

Nonzero, ha sikeres; egyéb esetben 0.

Megjegyzések

Az kefét később bármilyen eszközkörnyezet aktuális kefeként választhatja ki.

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

Inicializál egy ecsetet egy bittérkép által megadott mintával.

BOOL CreatePatternBrush(CBitmap* pBitmap);

Paraméterek

pBitmap
Bitképet azonosít.

Visszaadott érték

Nonzero, ha sikeres; egyéb esetben 0.

Megjegyzések

Az ecset ezután bármely olyan eszközkörnyezethez kiválasztható, amely támogatja a raszteres műveleteket. Az azonosított pBitmap bitképet általában a CBitmap::CreateBitmap, , CBitmap::CreateBitmapIndirectCBitmap::LoadBitmapvagy CBitmap::CreateCompatibleBitmap függvény használatával inicializálják.

A kitöltési mintákként használt bitképeknek 8 képpontnak és 8 képpontnak kell lenniük. Ha a bitkép nagyobb, a Windows csak a bitkép bal felső sarkában lévő első 8 sornak és képpontoszlopnak megfelelő biteket használja.

A mintakefék a társított bitkép befolyásolása nélkül törölhetők. Ez azt jelenti, hogy a bitkép tetszőleges számú mintaecset létrehozásához használható.

A monokróm bitkép (1 színsík, képpontonként 1 bit) használatával létrehozott ecsetet a rendszer az aktuális szöveg és háttérszínek használatával rajzolja meg. A 0-ra beállított bit által képviselt képpontok az aktuális szövegszínnel vannak rajzolva. Az 1-nek beállított bit által képviselt képpontok az aktuális háttérszínnel vannak rajzolva.

A Windows-függvények használatáról CreatePatternBrusha Windows SDK-ból tájékozódhat.

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

Inicializál egy adott egyszínű kefét.

BOOL CreateSolidBrush(COLORREF crColor);

Paraméterek

crColor
Az COLORREF ecset színét meghatározó struktúra. A szín egy RGB-értéket ad meg, és a makróval is létrehozható a RGB következőben WINDOWS.H: .

Visszaadott érték

Nonzero, ha sikeres; egyéb esetben 0.

Megjegyzések

Az kefét később bármilyen eszközkörnyezet aktuális kefeként választhatja ki.

Ha egy alkalmazás befejezte a létrehozott CreateSolidBrushecset használatát, ki kell választania az kefét az eszközkörnyezetből.

Example

Lásd a példát a CBrush::CBrush.

CBrush::CreateSysColorBrush

Inicializálja az ecset színét.

BOOL CreateSysColorBrush(int nIndex);

Paraméterek

nIndex
Színindexet ad meg. Ez az érték a 21 ablakelem egyikének festéséhez használt színnek felel meg. Az értékek listáját a Windows SDK-ban találja GetSysColor .

Visszaadott érték

Nonzero, ha sikeres; egyéb esetben 0.

Megjegyzések

Az kefét később bármilyen eszközkörnyezet aktuális kefeként választhatja ki.

Ha egy alkalmazás befejezte a létrehozott CreateSysColorBrushecset használatát, ki kell választania az kefét az eszközkörnyezetből.

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

Mutatót ad vissza egy CBrush objektumhoz, ha egy Windows-objektumhoz HBRUSH fogópontot ad.

static CBrush* PASCAL FromHandle(HBRUSH hBrush);

Paraméterek

hBrush
HANDLE egy Windows GDI-kefére.

Visszaadott érték

Az objektumra mutató CBrush mutató, ha sikeres; ellenkező esetben NULL.

Megjegyzések

Ha egy CBrush objektum még nincs csatolva a leíróhoz, egy ideiglenes CBrush objektum jön létre és csatolva. Ez az ideiglenes CBrush objektum csak addig érvényes, amíg az alkalmazás következő alkalommal tétlen időt nem töltött az eseményhurkában. Jelenleg az összes ideiglenes grafikus objektum törlődik. Más szóval az ideiglenes objektum csak egy ablaküzenet feldolgozása során érvényes.

További információ a grafikus objektumok használatáról: Grafikus objektumok a Windows SDK-ban.

Example

Lásd a CBrush::CBrush példát.

CBrush::GetLogBrush

Hívja meg ezt a tagfüggvényt a struktúra lekéréséhez LOGBRUSH .

int GetLogBrush(LOGBRUSH* pLogBrush);

Paraméterek

pLogBrush
LOGBRUSH Az ecsettel kapcsolatos információkat tartalmazó szerkezetre mutat.

Visszaadott érték

Ha a függvény sikeres, és pLogBrush érvényes mutató, a visszatérési érték a pufferben tárolt bájtok száma.

Ha a függvény sikeres, és pLogBrush így van NULL, a visszatérési érték az a bájtok száma, amely a függvény által a pufferben tárolt információk tárolásához szükséges.

Ha a függvény sikertelen, a visszatérési érték 0.

Megjegyzések

A LOGBRUSH struktúra határozza meg az ecset stílusát, színét és mintázatát.

Például egy bitkép adott színének vagy mintázatának megfelelő hívás GetLogBrush .

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

Ezzel az operátorral lekérheti az objektum csatolt Windows GDI-leíróját CBrush .

operator HBRUSH() const;

Visszaadott érték

Ha sikeres, az objektum által CBrush képviselt Windows GDI-objektum leírója; ellenkező esetben NULL.

Megjegyzések

Ez az operátor egy öntvény operátor, amely támogatja az HBRUSH objektumok közvetlen használatát.

További információ a grafikus objektumok használatáról: Grafikus objektumok a Windows SDK-ban.

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);

Lásd még

MFC-minta PROPDLG
CGdiObject osztály
hierarchiadiagram
CBitmap osztály
CDC osztály