Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Zapouzdřuje štětec grafického zařízení (GDI) systému Windows.
Syntaxe
class CBrush : public CGdiObject
Členové
Veřejné konstruktory
| Název | Popis |
|---|---|
CBrush::CBrush |
CBrush Vytvoří objekt. |
Veřejné metody
| Název | Popis |
|---|---|
CBrush::CreateBrushIndirect |
Inicializuje štětec stylem, barvou a vzorem zadaným ve struktuře LOGBRUSH . |
CBrush::CreateDIBPatternBrush |
Inicializuje štětec se vzorem určeným bitmapou nezávislou na zařízení (DIB). |
CBrush::CreateHatchBrush |
Inicializuje štětec se zadaným šrafovaným vzorem a barvou. |
CBrush::CreatePatternBrush |
Inicializuje štětec se vzorem určeným rastrovým obrázkem. |
CBrush::CreateSolidBrush |
Inicializuje štětec se zadanou plnou barvou. |
CBrush::CreateSysColorBrush |
Vytvoří štětec, který je výchozí barvou systému. |
CBrush::FromHandle |
Vrátí ukazatel na CBrush objekt při zadání úchytu objektu Systému Windows HBRUSH . |
CBrush::GetLogBrush |
LOGBRUSH Získá strukturu. |
Veřejné operátory
| Název | Popis |
|---|---|
CBrush::operator HBRUSH |
Vrátí popisovač Windows připojený k objektu CBrush . |
Poznámky
Pokud chcete použít CBrush objekt, vytvořte CBrush objekt a předejte ho jakékoli CDC členské funkci, která vyžaduje štětec.
Kartáče můžou být pevné, šrafované nebo vzorované.
Další informace naleznete CBrushv tématu Grafické objekty.
Hierarchie dědičnosti
CBrush
Požadavky
Záhlaví: afxwin.h
CBrush::CBrush
CBrush Vytvoří objekt.
CBrush();
CBrush(COLORREF crColor);
CBrush(int nIndex, COLORREF crColor);
explicit CBrush(CBitmap* pBitmap);
Parametry
crColor
Určuje barvu popředí štětce jako barvu RGB. Pokud je štětec šrafován, tento parametr určuje barvu šrafování.
nIndex
Určuje styl šrafování štětce. Může to být libovolná z následujících hodnot:
HS_BDIAGONALŠrafa dolů (zleva doprava) ve 45 stupníchHS_CROSSVodorovný a svislý křížekHS_DIAGCROSSCrosshatch at 45 degreesHS_FDIAGONALŠrafa nahoru (zleva doprava) ve 45 stupníchHS_HORIZONTALVodorovný šrafHS_VERTICALSvislý šraf
pBitmap
Odkazuje na CBitmap objekt, který určuje rastrový obrázek, se kterým štětec maluje.
Poznámky
CBrush má čtyři přetížené konstruktory. Konstruktor bez argumentů vytvoří neinicializovaný CBrush objekt, který musí být inicializován před použitím.
Pokud použijete konstruktor bez argumentů, je nutné inicializovat výsledný CBrush objekt pomocí CreateSolidBrush, CreateHatchBrush, CreateBrushIndirect, , CreatePatternBrushnebo CreateDIBPatternBrush. Pokud použijete jeden z konstruktorů, který přebírá argumenty, není nutné žádné další inicializace. Konstruktory s argumenty mohou vyvolat výjimku, pokud jsou zjištěny chyby, zatímco konstruktor bez argumentů bude vždy úspěšný.
Konstruktor s jedním COLORREF parametrem vytvoří plný štětec se zadanou barvou. Barva určuje hodnotu RGB a lze ji vytvořit pomocí RGB makra v WINDOWS.H.
Konstruktor se dvěma parametry vytvoří šrafovací štětec. Parametr nIndex určuje index šrafovaného vzoru. Parametr crColor určuje barvu.
Konstruktor s parametrem CBitmap vytvoří vzorovaný štětec. Parametr identifikuje rastrový obrázek. Předpokládá se, že rastrový obrázek byl vytvořen pomocí CBitmap::CreateBitmap, CBitmap::CreateBitmapIndirect, CBitmap::LoadBitmap, nebo CBitmap::CreateCompatibleBitmap. Minimální velikost rastrového obrázku, který se má použít ve vzorku výplně, je 8 pixelů o 8 pixelů.
Příklad
// 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
Inicializuje štětec stylem, barvou a vzorem zadaným ve struktuře LOGBRUSH .
BOOL CreateBrushIndirect(const LOGBRUSH* lpLogBrush);
Parametry
lpLogBrush
Odkazuje na LOGBRUSH strukturu, která obsahuje informace o štětci.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Štětec lze následně vybrat jako aktuální štětec pro jakýkoli kontext zařízení.
Štětec vytvořený pomocí monochromatického rastrového obrázku (1 rovina, 1 bit na pixel) se nakreslí pomocí aktuálního textu a barvy pozadí. Pixely reprezentované bitem nastaveným na 0 budou nakresleny aktuální barvou textu. Pixely reprezentované bitem nastaveným na 1 se nakreslí aktuální barvou pozadí.
Příklad
// 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
Inicializuje štětec se vzorem určeným bitmapou nezávislou na zařízení (DIB).
BOOL CreateDIBPatternBrush(
HGLOBAL hPackedDIB,
UINT nUsage);
BOOL CreateDIBPatternBrush(
const void* lpPackedDIB,
UINT nUsage);
Parametry
hPackedDIB
Identifikuje objekt globální paměti obsahující zabalený rastrový obrázek nezávislý na zařízení (DIB).
nUsage
Určuje, zda bmiColors[] pole BITMAPINFO datové struktury (část "zabaleného DIB") obsahují explicitní hodnoty RGB nebo indexy do aktuálně realizované logické palety. Parametr musí být jedna z následujících hodnot:
DIB_PAL_COLORSBarevná tabulka se skládá z pole 16bitových indexů.DIB_RGB_COLORSTabulka barev obsahuje literální hodnoty RGB.
lpPackedDIB
Odkazuje na zabalený DIB skládající se ze BITMAPINFO struktury bezprostředně následované polem bajtů definujících pixely rastrového obrázku.
Návratová hodnota
Nenulové, pokud je úspěšné; jinak 0.
Poznámky
Štětec lze následně vybrat pro jakýkoli kontext zařízení, který podporuje rastrové operace.
Dvě verze se liší způsobem, jakým zpracováváte DIB:
V první verzi získáte popisovač dib volání funkce Windows
GlobalAllocpřidělení bloku globální paměti a poté vyplnit paměť zabaleným DIB.Ve druhé verzi není nutné volat
GlobalAllocpřidělení paměti pro zabalený DIB.
Zabalený DIB se skládá z BITMAPINFO datové struktury okamžitě následované polem bajtů, které definují pixely rastrového obrázku. Rastrové obrázky používané jako vzorky výplně by měly být 8 pixelů o 8 pixelů. Pokud je rastrový obrázek větší, Vytvoří systém Windows vzor výplně pouze pomocí bitů odpovídajících prvním 8 řádkům a 8 sloupců pixelů v levém horním rohu rastrového obrázku.
Když aplikace vybere dvoubarevný štětec vzoru DIB do monochromatického kontextu zařízení, Systém Windows ignoruje barvy zadané v DIB a místo toho zobrazí štětec vzoru pomocí aktuálního textu a barev pozadí kontextu zařízení. Pixely namapované na první barvu (při posunu 0 v tabulce barev DIB) diB se zobrazí pomocí barvy textu. Pixely mapované na druhou barvu (při posunu 1 v tabulce barev) se zobrazí pomocí barvy pozadí.
Informace o používání následujících funkcí systému Windows najdete v sadě Windows SDK:
CreateDIBPatternBrush(Tato funkce je poskytována pouze pro kompatibilituCreateDIBPatternBrushPts aplikacemi napsanými pro verze Systému Windows starší než 3.0; použijte funkci.)CreateDIBPatternBrushPt(Tato funkce by se měla používat pro aplikace založené na Win32.)
Příklad
// 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
Inicializuje štětec se zadaným šrafovaným vzorem a barvou.
BOOL CreateHatchBrush(
int nIndex,
COLORREF crColor);
Parametry
nIndex
Určuje styl šrafování štětce. Může to být libovolná z následujících hodnot:
HS_BDIAGONALŠrafa dolů (zleva doprava) ve 45 stupníchHS_CROSSVodorovný a svislý křížekHS_DIAGCROSSCrosshatch at 45 degreesHS_FDIAGONALŠrafa nahoru (zleva doprava) ve 45 stupníchHS_HORIZONTALVodorovný šrafHS_VERTICALSvislý šraf
crColor
Určuje barvu popředí štětce jako barvu RGB (barva šrafování). Další informace najdete COLORREF v sadě Windows SDK.
Návratová hodnota
Nenulové, pokud je úspěšné; jinak 0.
Poznámky
Štětec lze následně vybrat jako aktuální štětec pro jakýkoli kontext zařízení.
Příklad
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
Inicializuje štětec se vzorem určeným rastrovým obrázkem.
BOOL CreatePatternBrush(CBitmap* pBitmap);
Parametry
pBitmap
Identifikuje rastrový obrázek.
Návratová hodnota
Nenulové, pokud je úspěšné; jinak 0.
Poznámky
Štětec lze následně vybrat pro jakýkoli kontext zařízení, který podporuje rastrové operace. Rastrový obrázek identifikovaný pBitmap pomocí funkce , CBitmap::CreateBitmapIndirect, CBitmap::LoadBitmapnebo CBitmap::CreateCompatibleBitmap funkce je obvykle inicializovánCBitmap::CreateBitmap.
Rastrové obrázky používané jako vzorky výplně by měly být 8 pixelů o 8 pixelů. Pokud je rastrový obrázek větší, systém Windows použije jenom bity odpovídající prvním 8 řádkům a sloupcům pixelů v levém horním rohu rastrového obrázku.
Vzorový štětec lze odstranit bez ovlivnění přidruženého rastrového obrázku. To znamená, že rastrový obrázek lze použít k vytvoření libovolného počtu vzorových štětců.
Štětec vytvořený pomocí monochromatické bitmapy (1 barevná rovina, 1 bit na pixel) je vykreslen pomocí aktuálního textu a barvy pozadí. Pixely reprezentované bitem nastaveným na 0 se nakreslí aktuální barvou textu. Pixely reprezentované bitem nastaveným na 1 se nakreslují aktuální barvou pozadí.
Informace o použití CreatePatternBrushfunkce systému Windows naleznete v sadě Windows SDK.
Příklad
// 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
Inicializuje štětec se zadanou plnou barvou.
BOOL CreateSolidBrush(COLORREF crColor);
Parametry
crColor
Struktura COLORREF , která určuje barvu štětce. Barva určuje hodnotu RGB a lze ji vytvořit pomocí RGB makra v WINDOWS.H.
Návratová hodnota
Nenulové, pokud je úspěšné; jinak 0.
Poznámky
Štětec lze následně vybrat jako aktuální štětec pro jakýkoli kontext zařízení.
Po dokončení použití štětce vytvořeného CreateSolidBrushštětcem by se měl vybrat štětec z kontextu zařízení.
Příklad
Podívejte se na příklad pro CBrush::CBrush.
CBrush::CreateSysColorBrush
Inicializuje barvu štětce.
BOOL CreateSysColorBrush(int nIndex);
Parametry
nIndex
Určuje barevný index. Tato hodnota odpovídá barvě použité k malování jednoho z 21 prvků okna. Seznam hodnot najdete GetSysColor v sadě Windows SDK.
Návratová hodnota
Nenulové, pokud je úspěšné; jinak 0.
Poznámky
Štětec lze následně vybrat jako aktuální štětec pro jakýkoli kontext zařízení.
Po dokončení použití štětce vytvořeného CreateSysColorBrushštětcem by se měl vybrat štětec z kontextu zařízení.
Příklad
// 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
Vrátí ukazatel na CBrush objekt při zadání úchytu objektu Systému Windows HBRUSH .
static CBrush* PASCAL FromHandle(HBRUSH hBrush);
Parametry
hBrush
HANDLE to a Windows GDI brush.
Návratová hodnota
Ukazatel na CBrush objekt, pokud je úspěšný; jinak NULL.
Poznámky
CBrush Pokud objekt ještě není připojený k popisovači, vytvoří se dočasný CBrush objekt a připojí se. Tento dočasný CBrush objekt je platný pouze do okamžiku, kdy aplikace bude ve smyčce událostí nečinná. V tuto chvíli se odstraní všechny dočasné grafické objekty. Jinými slovy, dočasný objekt je platný pouze během zpracování jedné zprávy okna.
Další informace o používání grafických objektů naleznete v tématu Grafické objekty v sadě Windows SDK.
Příklad
Podívejte se na příklad pro CBrush::CBrush.
CBrush::GetLogBrush
Voláním této členské funkce načtěte LOGBRUSH strukturu.
int GetLogBrush(LOGBRUSH* pLogBrush);
Parametry
pLogBrush
Odkazuje na LOGBRUSH strukturu, která obsahuje informace o štětci.
Návratová hodnota
Pokud je funkce úspěšná a pLogBrush je platným ukazatelem, je vrácená hodnota počet bajtů uložených do vyrovnávací paměti.
Pokud je funkce úspěšná a pLogBrush je NULL, návratová hodnota je počet bajtů potřebných k uložení informací, které by funkce uložila do vyrovnávací paměti.
Pokud funkce selže, návratová hodnota je 0.
Poznámky
Struktura LOGBRUSH definuje styl, barvu a vzor štětce.
Volání tak, GetLogBrush aby odpovídalo konkrétní barvě nebo vzoru rastrového obrázku.
Příklad
// 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
Pomocí tohoto operátoru získáte připojený popisovač GDI windows objektu CBrush .
operator HBRUSH() const;
Návratová hodnota
V případě úspěchu je popisovač objektu GDI systému Windows reprezentovaný objektem CBrush ; jinak NULL.
Poznámky
Tento operátor je operátor přetypování, který podporuje přímé použití objektu HBRUSH .
Další informace o používání grafických objektů naleznete v tématu Grafické objekty v sadě Windows SDK.
Příklad
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);
Viz také
Mfc – ukázka PROPDLG
CGdiObject Třída
Graf hierarchie
CBitmap Třída
CDC Třída