CBrush
Třída
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 CBrush
v 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_CROSS
Vodorovný a svislý křížekHS_DIAGCROSS
Crosshatch at 45 degreesHS_FDIAGONAL
Šrafa nahoru (zleva doprava) ve 45 stupníchHS_HORIZONTAL
Vodorovný šrafHS_VERTICAL
Svislý š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
, , CreatePatternBrush
nebo 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_COLORS
Barevná tabulka se skládá z pole 16bitových indexů.DIB_RGB_COLORS
Tabulka 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
GlobalAlloc
přidělení bloku globální paměti a poté vyplnit paměť zabaleným DIB.Ve druhé verzi není nutné volat
GlobalAlloc
př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 kompatibilituCreateDIBPatternBrushPt
s 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_CROSS
Vodorovný a svislý křížekHS_DIAGCROSS
Crosshatch at 45 degreesHS_FDIAGONAL
Šrafa nahoru (zleva doprava) ve 45 stupníchHS_HORIZONTAL
Vodorovný šrafHS_VERTICAL
Svislý š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::LoadBitmap
nebo 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í CreatePatternBrush
funkce 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