Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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
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_BDIAGONALLefelé (balról jobbra) 45 fokonHS_CROSSVízszintes és függőleges keresztfátHS_DIAGCROSSCrosshatch 45 fokonHS_FDIAGONALFelfelé (balról jobbra) 45 fokonHS_HORIZONTALVízszintes nyílásHS_VERTICALFü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_COLORSA színtábla egy 16 bites indexekből álló tömbből áll.DIB_RGB_COLORSA 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
GlobalAllocfü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
GlobalAlloca 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énytCreateDIBPatternBrushPt.)CreateDIBPatternBrushPt(Ezt a függvényt Win32-alapú alkalmazásokhoz kell használni.)
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_BDIAGONALLefelé (balról jobbra) 45 fokonHS_CROSSVízszintes és függőleges keresztfátHS_DIAGCROSSCrosshatch 45 fokonHS_FDIAGONALFelfelé (balról jobbra) 45 fokonHS_HORIZONTALVízszintes nyílásHS_VERTICALFü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