CBrush
Klasa
Hermetyzuje szczotkę interfejsu urządzenia graficznego systemu Windows (GDI).
Składnia
class CBrush : public CGdiObject
Elementy członkowskie
Konstruktory publiczne
Nazwa/nazwisko | opis |
---|---|
CBrush::CBrush |
CBrush Tworzy obiekt. |
Metody publiczne
Nazwa/nazwisko | opis |
---|---|
CBrush::CreateBrushIndirect |
Inicjuje szczotkę ze stylem, kolorem i wzorcem LOGBRUSH określonym w strukturze. |
CBrush::CreateDIBPatternBrush |
Inicjuje szczotkę ze wzorcem określonym przez mapę bitową niezależną od urządzenia (DIB). |
CBrush::CreateHatchBrush |
Inicjuje szczotkę z określonym wzorem i kolorem kreskowanym. |
CBrush::CreatePatternBrush |
Inicjuje szczotkę ze wzorcem określonym przez mapę bitową. |
CBrush::CreateSolidBrush |
Inicjuje szczotkę z określonym kolorem stałym. |
CBrush::CreateSysColorBrush |
Tworzy szczotkę, która jest domyślnym kolorem systemu. |
CBrush::FromHandle |
Zwraca wskaźnik do CBrush obiektu, gdy dana dojście do obiektu systemu Windows HBRUSH . |
CBrush::GetLogBrush |
LOGBRUSH Pobiera strukturę. |
Operatory publiczne
Nazwa/nazwisko | opis |
---|---|
CBrush::operator HBRUSH |
Zwraca uchwyt systemu Windows dołączony do CBrush obiektu. |
Uwagi
Aby użyć CBrush
obiektu, skonstruuj CBrush
obiekt i przekaż go do dowolnej CDC
funkcji składowej, która wymaga pędzla.
Szczotki mogą być solidne, wykluwane lub wzorzyste.
Aby uzyskać więcej informacji na temat CBrush
programu , zobacz Obiekty graficzne.
Hierarchia dziedziczenia
CBrush
Wymagania
Nagłówek: afxwin.h
CBrush::CBrush
CBrush
Tworzy obiekt.
CBrush();
CBrush(COLORREF crColor);
CBrush(int nIndex, COLORREF crColor);
explicit CBrush(CBitmap* pBitmap);
Parametry
crColor
Określa kolor pierwszego planu pędzla jako kolor RGB. Jeśli szczotka jest wykluta, ten parametr określa kolor kreskowania.
nIndex
Określa styl kreskowania pędzla. Może to być dowolna z następujących wartości:
HS_BDIAGONAL
Wyklucie w dół (od lewej do prawej) o 45 stopniHS_CROSS
Poziomy i pionowy wycięcie krzyżoweHS_DIAGCROSS
Crosshatch na 45 stopniHS_FDIAGONAL
Kreska w górę (od lewej do prawej) o 45 stopniHS_HORIZONTAL
Kreska poziomaHS_VERTICAL
Kreska pionowa
pBitmap
CBitmap
Wskazuje obiekt, który określa mapę bitową, z którą maluje się pędzlem.
Uwagi
CBrush
ma cztery przeciążone konstruktory. Konstruktor bez argumentów tworzy niezainicjowany CBrush
obiekt, który musi zostać zainicjowany, zanim będzie można go użyć.
Jeśli używasz konstruktora bez argumentów, musisz zainicjować wynikowy CBrush
obiekt za pomocą CreateSolidBrush
metody , , CreateHatchBrush
CreateBrushIndirect
, CreatePatternBrush
lub CreateDIBPatternBrush
. Jeśli używasz jednego z konstruktorów, który przyjmuje argumenty, nie jest konieczne dalsze inicjowanie. Konstruktory z argumentami mogą zgłaszać wyjątek w przypadku napotkania błędów, podczas gdy konstruktor bez argumentów zawsze powiedzie się.
Konstruktor z pojedynczym COLORREF
parametrem konstruuje stałe szczotki o określonym kolorze. Kolor określa wartość RGB i można go skonstruować za pomocą makra RGB
w pliku WINDOWS.H
.
Konstruktor z dwoma parametrami tworzy szczotkę kreskową. Parametr nIndex
określa indeks kreskowanego wzorca. Parametr crColor
określa kolor.
Konstruktor z parametrem CBitmap
konstruuje wzór pędzla. Parametr identyfikuje mapę bitową. Zakłada się, że mapa bitowa została utworzona przy użyciu metody CBitmap::CreateBitmap
, CBitmap::CreateBitmapIndirect
, CBitmap::LoadBitmap
lub CBitmap::CreateCompatibleBitmap
. Minimalny rozmiar mapy bitowej do użycia we wzorcu wypełnienia to 8 pikseli o 8 pikseli.
Przykład
// 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
Inicjuje szczotkę ze stylem, kolorem i wzorcem LOGBRUSH
określonym w strukturze.
BOOL CreateBrushIndirect(const LOGBRUSH* lpLogBrush);
Parametry
lpLogBrush
Wskazuje strukturę zawierającą LOGBRUSH
informacje o szczotki.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Pędzla można następnie wybrać jako bieżący pędzl dla dowolnego kontekstu urządzenia.
Pędzl utworzony przy użyciu mapy bitowej monochromatycznej (1 płaszczyzny, 1 bit na piksel) jest rysowany przy użyciu bieżącego tekstu i kolorów tła. Piksele reprezentowane przez bit ustawiony na 0 zostaną narysowane z bieżącym kolorem tekstu. Piksele reprezentowane przez bit ustawiony na 1 zostaną narysowane z bieżącym kolorem tła.
Przykład
// 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
Inicjuje szczotkę ze wzorcem określonym przez niezależną od urządzenia mapę bitową (DIB).
BOOL CreateDIBPatternBrush(
HGLOBAL hPackedDIB,
UINT nUsage);
BOOL CreateDIBPatternBrush(
const void* lpPackedDIB,
UINT nUsage);
Parametry
hPackedDIB
Identyfikuje obiekt pamięci globalnej zawierający pakowaną niezależnie od urządzenia mapę bitową (DIB).
nUsage
Określa, czy bmiColors[]
pola BITMAPINFO
struktury danych (część "pakowane DIB") zawierają jawne wartości RGB lub indeksy do aktualnie zrealizowanej palety logicznej. Parametr musi być jedną z następujących wartości:
DIB_PAL_COLORS
Tabela kolorów składa się z tablicy 16-bitowych indeksów.DIB_RGB_COLORS
Tabela kolorów zawiera literały WARTOŚCI RGB.
lpPackedDIB
Wskazuje spakowany DIB składający się z BITMAPINFO
struktury bezpośrednio po tablicy bajtów definiujących piksele mapy bitowej.
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Uwagi
Następnie można wybrać szczotkę dla dowolnego kontekstu urządzenia, który obsługuje operacje rasterowe.
Obie wersje różnią się sposobem obsługi dib:
W pierwszej wersji, aby uzyskać dojście do DIB wywołać funkcję systemu Windows
GlobalAlloc
w celu przydzielenia bloku pamięci globalnej, a następnie wypełnić pamięć spakowaną DIB.W drugiej wersji nie trzeba wywoływać
GlobalAlloc
pamięci dla spakowanego DIB.
Zapakowany DIB składa się ze BITMAPINFO
struktury danych bezpośrednio po tablicy bajtów definiujących piksele mapy bitowej. Mapy bitowe używane jako wzorce wypełnienia powinny mieć 8 pikseli na 8 pikseli. Jeśli mapa bitowa jest większa, system Windows tworzy wzorzec wypełnienia przy użyciu tylko bitów odpowiadających pierwszym 8 wierszom i 8 kolumnom pikseli w lewym górnym rogu mapy bitowej.
Po wybraniu przez aplikację pędzla dwukolorowego wzorca DIB do kontekstu urządzenia monochromatycznego system Windows ignoruje kolory określone w DIB, a zamiast tego wyświetla pędzla do wzorca przy użyciu bieżącego tekstu i kolorów tła kontekstu urządzenia. Piksele mapowane na pierwszy kolor (z przesunięciem 0 w tabeli kolorów DIB) DIB są wyświetlane przy użyciu koloru tekstu. Piksele mapowane na drugi kolor (z przesunięciem 1 w tabeli kolorów) są wyświetlane przy użyciu koloru tła.
Aby uzyskać informacje o korzystaniu z następujących funkcji systemu Windows, zobacz zestaw Windows SDK:
CreateDIBPatternBrush
(Ta funkcja jest udostępniana tylko pod kątem zgodności z aplikacjami napisanymi dla wersji systemu Windows starszych niż 3.0; użyjCreateDIBPatternBrushPt
funkcji).CreateDIBPatternBrushPt
(Ta funkcja powinna być używana dla aplikacji opartych na systemie Win32).
Przykład
// 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
Inicjuje szczotkę z określonym wzorem i kolorem kreskowanym.
BOOL CreateHatchBrush(
int nIndex,
COLORREF crColor);
Parametry
nIndex
Określa styl kreskowania pędzla. Może to być dowolna z następujących wartości:
HS_BDIAGONAL
Wyklucie w dół (od lewej do prawej) o 45 stopniHS_CROSS
Poziomy i pionowy wycięcie krzyżoweHS_DIAGCROSS
Crosshatch na 45 stopniHS_FDIAGONAL
Kreska w górę (od lewej do prawej) o 45 stopniHS_HORIZONTAL
Kreska poziomaHS_VERTICAL
Kreska pionowa
crColor
Określa kolor pierwszego planu pędzla jako kolor RGB (kolor kresków). Aby uzyskać więcej informacji, zobacz COLORREF
w zestawie Windows SDK.
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Uwagi
Pędzla można następnie wybrać jako bieżący pędzl dla dowolnego kontekstu urządzenia.
Przykład
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
Inicjuje szczotkę ze wzorcem określonym przez mapę bitową.
BOOL CreatePatternBrush(CBitmap* pBitmap);
Parametry
pBitmap
Identyfikuje mapę bitową.
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Uwagi
Następnie można wybrać szczotkę dla dowolnego kontekstu urządzenia, który obsługuje operacje rasterowe. Mapa bitowa zidentyfikowana przez program jest zwykle inicjowana pBitmap
przy użyciu CBitmap::CreateBitmap
funkcji , CBitmap::CreateBitmapIndirect
, CBitmap::LoadBitmap
lub CBitmap::CreateCompatibleBitmap
.
Mapy bitowe używane jako wzorce wypełnienia powinny mieć 8 pikseli na 8 pikseli. Jeśli mapa bitowa jest większa, system Windows będzie używać tylko bitów odpowiadających pierwszym 8 wierszom i kolumnom pikseli w lewym górnym rogu mapy bitowej.
Pędzla deseń można usunąć bez wpływu na powiązaną mapę bitową. Oznacza to, że mapa bitowa może służyć do tworzenia dowolnej liczby pędzli wzór.
Pędzl utworzony przy użyciu mapy bitowej monochromatycznej (1 płaszczyzna kolorów, 1 bit na piksel) jest rysowany przy użyciu bieżącego tekstu i kolorów tła. Piksele reprezentowane przez bit ustawiony na 0 są rysowane z bieżącym kolorem tekstu. Piksele reprezentowane przez bit ustawiony na 1 są rysowane z bieżącym kolorem tła.
Aby uzyskać informacje na temat używania CreatePatternBrush
funkcji systemu Windows, zobacz zestaw Windows SDK.
Przykład
// 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
Inicjuje szczotkę z określonym stałym kolorem.
BOOL CreateSolidBrush(COLORREF crColor);
Parametry
crColor
Struktura COLORREF
określająca kolor pędzla. Kolor określa wartość RGB i można go skonstruować za pomocą makra RGB
w pliku WINDOWS.H
.
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Uwagi
Pędzla można następnie wybrać jako bieżący pędzl dla dowolnego kontekstu urządzenia.
Gdy aplikacja zakończy korzystanie z pędzla utworzonego przez CreateSolidBrush
program , powinna wybrać szczotkę z kontekstu urządzenia.
Przykład
Zobacz przykład dla elementu CBrush::CBrush
.
CBrush::CreateSysColorBrush
Inicjuje kolor pędzla.
BOOL CreateSysColorBrush(int nIndex);
Parametry
nIndex
Określa indeks kolorów. Ta wartość odpowiada kolorowi użytemu do malowania jednego z 21 elementów okna. Zobacz GetSysColor
w zestawie Windows SDK, aby uzyskać listę wartości.
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Uwagi
Pędzla można następnie wybrać jako bieżący pędzl dla dowolnego kontekstu urządzenia.
Gdy aplikacja zakończy korzystanie z pędzla utworzonego przez CreateSysColorBrush
program , powinna wybrać szczotkę z kontekstu urządzenia.
Przykład
// 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
Zwraca wskaźnik do CBrush
obiektu, gdy dana dojście do obiektu systemu Windows HBRUSH
.
static CBrush* PASCAL FromHandle(HBRUSH hBrush);
Parametry
hBrush
Obsługa pędzla GDI systemu Windows.
Wartość zwracana
Wskaźnik do CBrush
obiektu, jeśli się powiedzie; w przeciwnym razie NULL
.
Uwagi
CBrush
Jeśli obiekt nie jest jeszcze dołączony do uchwytu, zostanie utworzony i dołączony obiekt tymczasowyCBrush
. Ten obiekt tymczasowy CBrush
jest prawidłowy tylko do następnego czasu bezczynności aplikacji w pętli zdarzeń. Obecnie wszystkie tymczasowe obiekty graficzne są usuwane. Innymi słowy, obiekt tymczasowy jest prawidłowy tylko podczas przetwarzania jednego komunikatu okna.
Aby uzyskać więcej informacji na temat używania obiektów graficznych, zobacz Obiekty graficzne w zestawie Windows SDK.
Przykład
Zobacz przykład CBrush::CBrush.
CBrush::GetLogBrush
Wywołaj tę funkcję składową, aby pobrać LOGBRUSH
strukturę.
int GetLogBrush(LOGBRUSH* pLogBrush);
Parametry
pLogBrush
Wskazuje strukturę zawierającą LOGBRUSH
informacje o szczotki.
Wartość zwracana
Jeśli funkcja powiedzie się i pLogBrush
jest prawidłowym wskaźnikiem, zwracana wartość to liczba bajtów przechowywanych w buforze.
Jeśli funkcja powiedzie się i pLogBrush
ma NULL
wartość , zwracana wartość to liczba bajtów wymaganych do przechowywania informacji, które funkcja będzie przechowywać w buforze.
Jeśli funkcja zakończy się niepowodzeniem, zwracana wartość to 0.
Uwagi
Struktura LOGBRUSH
definiuje styl, kolor i deseń pędzla.
Na przykład wywołaj metodę GetLogBrush
, aby dopasować określony kolor lub wzorzec mapy bitowej.
Przykład
// 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
Użyj tego operatora, aby pobrać dołączony uchwyt GDI systemu CBrush
Windows obiektu.
operator HBRUSH() const;
Wartość zwracana
W przypadku powodzenia dojście do obiektu GDI systemu Windows reprezentowanego CBrush
przez obiekt ; w przeciwnym razie NULL
.
Uwagi
Ten operator jest operatorem rzutowania, który obsługuje bezpośrednie użycie HBRUSH
obiektu.
Aby uzyskać więcej informacji na temat używania obiektów graficznych, zobacz Obiekty graficzne w zestawie Windows SDK.
Przykład
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);
Zobacz też
Przykład MFC PROPDLG
CGdiObject
Klasa
Wykres hierarchii
CBitmap
Klasa
CDC
Klasa