Classe CBrush
Incapsula un pennello GDI (Graphics Device Interface) di Windows.
Sintassi
class CBrush : public CGdiObject
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
CBrush::CBrush |
Costruisce un oggetto CBrush . |
Metodi pubblici
Nome | Descrizione |
---|---|
CBrush::CreateBrushIndirect |
Inizializza un pennello con lo stile, il colore e il motivo specificati in una LOGBRUSH struttura. |
CBrush::CreateDIBPatternBrush |
Inizializza un pennello con un modello specificato da una bitmap indipendente dal dispositivo (DIB). |
CBrush::CreateHatchBrush |
Inizializza un pennello con il motivo e il colore tratteggi specificati. |
CBrush::CreatePatternBrush |
Inizializza un pennello con un modello specificato da una bitmap. |
CBrush::CreateSolidBrush |
Inizializza un pennello con il colore a tinta unita specificato. |
CBrush::CreateSysColorBrush |
Crea un pennello che rappresenta il colore di sistema predefinito. |
CBrush::FromHandle |
Restituisce un puntatore a un CBrush oggetto quando viene assegnato un handle a un oggetto Windows HBRUSH . |
CBrush::GetLogBrush |
Ottiene una LOGBRUSH struttura. |
Operatori pubblici
Nome | Descrizione |
---|---|
CBrush::operator HBRUSH |
Restituisce l'handle di Windows associato all'oggetto CBrush . |
Osservazioni:
Per usare un CBrush
oggetto , costruire un CBrush
oggetto e passarlo a qualsiasi CDC
funzione membro che richiede un pennello.
I pennelli possono essere solidi, tratteggi o modelli.
Per altre informazioni su CBrush
, vedere Oggetti grafici.
Gerarchia di ereditarietà
CBrush
Requisiti
Intestazione: afxwin.h
CBrush::CBrush
Costruisce un oggetto CBrush
.
CBrush();
CBrush(COLORREF crColor);
CBrush(int nIndex, COLORREF crColor);
explicit CBrush(CBitmap* pBitmap);
Parametri
crColor
Specifica il colore di primo piano del pennello come colore RGB. Se il pennello è tratteggio, questo parametro specifica il colore del tratteggio.
nIndex
Specifica lo stile del tratteggio del pennello. Può essere uno dei valori seguenti:
HS_BDIAGONAL
Tratteggio verso il basso (da sinistra a destra) a 45 gradiHS_CROSS
Crosshatch orizzontale e verticaleHS_DIAGCROSS
Crosshatch a 45 gradiHS_FDIAGONAL
Tratteggio verso l'alto (da sinistra a destra) a 45 gradiHS_HORIZONTAL
Tratteggio orizzontaleHS_VERTICAL
Tratteggio verticale
pBitmap
Punta a un CBitmap
oggetto che specifica una bitmap con cui il pennello disegna.
Osservazioni:
CBrush
dispone di quattro costruttori di overload. Il costruttore senza argomenti costruisce un oggetto non inizializzato CBrush
che deve essere inizializzato prima di poterlo utilizzare.
Se si usa il costruttore senza argomenti, è necessario inizializzare l'oggetto risultante CBrush
con CreateSolidBrush
, CreateHatchBrush
CreateBrushIndirect
, CreatePatternBrush
, o CreateDIBPatternBrush
. Se si utilizza uno dei costruttori che accettano argomenti, non è necessaria un'ulteriore inizializzazione. I costruttori con argomenti possono generare un'eccezione se vengono rilevati errori, mentre il costruttore senza argomenti avrà sempre esito positivo.
Il costruttore con un singolo COLORREF
parametro costruisce un pennello a tinta unita con il colore specificato. Il colore specifica un valore RGB e può essere costruito con la RGB
macro in WINDOWS.H
.
Il costruttore con due parametri costruisce un pennello di tratteggio. Il nIndex
parametro specifica l'indice di un modello tratteggio. Il crColor
parametro specifica il colore.
Il costruttore con un CBitmap
parametro costruisce un pennello con pattern. Il parametro identifica una bitmap. Si presuppone che la bitmap sia stata creata usando CBitmap::CreateBitmap
, CBitmap::CreateBitmapIndirect
CBitmap::LoadBitmap
, o CBitmap::CreateCompatibleBitmap
. La dimensione minima per una bitmap da usare in un motivo di riempimento è di 8 pixel di 8 pixel.
Esempio
// 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
Inizializza un pennello con uno stile, un colore e un motivo specificati in una LOGBRUSH
struttura.
BOOL CreateBrushIndirect(const LOGBRUSH* lpLogBrush);
Parametri
lpLogBrush
Punta a una LOGBRUSH
struttura che contiene informazioni sul pennello.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
Successivamente, il pennello può essere selezionato come pennello corrente per qualsiasi contesto di dispositivo.
Un pennello creato usando una bitmap monocromatica (1 piano, 1 bit per pixel) viene disegnata usando il testo e i colori di sfondo correnti. I pixel rappresentati da un bit impostato su 0 verranno disegnati con il colore del testo corrente. I pixel rappresentati da un bit impostato su 1 verranno disegnati con il colore di sfondo corrente.
Esempio
// 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
Inizializza un pennello con il modello specificato da una bitmap indipendente dal dispositivo (DIB).
BOOL CreateDIBPatternBrush(
HGLOBAL hPackedDIB,
UINT nUsage);
BOOL CreateDIBPatternBrush(
const void* lpPackedDIB,
UINT nUsage);
Parametri
hPackedDIB
Identifica un oggetto global-memory contenente una bitmap indipendente dal dispositivo (DIB) compressa.
nUsage
Specifica se i bmiColors[]
campi della struttura di BITMAPINFO
dati (una parte del "DIB compresso") contengono valori RGB espliciti o indici nella tavolozza logica attualmente realizzata. Il parametro deve essere uno dei valori seguenti:
DIB_PAL_COLORS
La tabella dei colori è costituita da una matrice di indici a 16 bit.DIB_RGB_COLORS
La tabella dei colori contiene valori RGB letterali.
lpPackedDIB
Punta a un DIB compresso costituito da una struttura immediatamente seguita da una BITMAPINFO
matrice di byte che definisce i pixel della bitmap.
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0.
Osservazioni:
Il pennello può essere selezionato successivamente per qualsiasi contesto di dispositivo che supporta operazioni raster.
Le due versioni differiscono nel modo in cui si gestisce il DIB:
Nella prima versione, per ottenere un handle al DIB chiamare la funzione windows
GlobalAlloc
per allocare un blocco di memoria globale e quindi riempire la memoria con il diB compresso.Nella seconda versione non è necessario chiamare
GlobalAlloc
per allocare memoria per il diB compresso.
Un DIB compresso è costituito da una BITMAPINFO
struttura di dati immediatamente seguita dalla matrice di byte che definisce i pixel della bitmap. Le bitmap usate come motivi di riempimento devono essere di 8 pixel per 8 pixel. Se la bitmap è più grande, Windows crea un motivo di riempimento usando solo i bit corrispondenti alle prime 8 righe e 8 colonne di pixel nell'angolo superiore sinistro della bitmap.
Quando un'applicazione seleziona un pennello modello DIB a due colori in un contesto di dispositivo monocromatico, Windows ignora i colori specificati nel DIB e visualizza invece il pennello del motivo usando il testo corrente e i colori di sfondo del contesto di dispositivo. I pixel mappati al primo colore (in corrispondenza dell'offset 0 nella tabella dei colori DIB) del DIB vengono visualizzati utilizzando il colore del testo. I pixel mappati al secondo colore (in corrispondenza dell'offset 1 nella tabella dei colori) vengono visualizzati usando il colore di sfondo.
Per informazioni sull'uso delle funzioni di Windows seguenti, vedere Windows SDK:
CreateDIBPatternBrush
Questa funzione viene fornita solo per compatibilità con le applicazioni scritte per le versioni di Windows precedenti alla 3.0. Usare laCreateDIBPatternBrushPt
funzione .CreateDIBPatternBrushPt
Questa funzione deve essere usata per le applicazioni basate su Win32.
Esempio
// 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
Inizializza un pennello con il motivo e il colore tratteggi specificati.
BOOL CreateHatchBrush(
int nIndex,
COLORREF crColor);
Parametri
nIndex
Specifica lo stile del tratteggio del pennello. Può essere uno dei valori seguenti:
HS_BDIAGONAL
Tratteggio verso il basso (da sinistra a destra) a 45 gradiHS_CROSS
Crosshatch orizzontale e verticaleHS_DIAGCROSS
Crosshatch a 45 gradiHS_FDIAGONAL
Tratteggio verso l'alto (da sinistra a destra) a 45 gradiHS_HORIZONTAL
Tratteggio orizzontaleHS_VERTICAL
Tratteggio verticale
crColor
Specifica il colore di primo piano del pennello come colore RGB (il colore dei tratteggi). Per altre informazioni, vedere COLORREF
in Windows SDK.
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0.
Osservazioni:
Successivamente, il pennello può essere selezionato come pennello corrente per qualsiasi contesto di dispositivo.
Esempio
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
Inizializza un pennello con un modello specificato da una bitmap.
BOOL CreatePatternBrush(CBitmap* pBitmap);
Parametri
pBitmap
Identifica una bitmap.
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0.
Osservazioni:
Il pennello può essere selezionato successivamente per qualsiasi contesto di dispositivo che supporta operazioni raster. La bitmap identificata da pBitmap
viene in genere inizializzata usando la CBitmap::CreateBitmap
funzione , CBitmap::LoadBitmap
CBitmap::CreateBitmapIndirect
, o CBitmap::CreateCompatibleBitmap
.
Le bitmap usate come motivi di riempimento devono essere di 8 pixel per 8 pixel. Se la bitmap è più grande, Windows userà solo i bit corrispondenti alle prime 8 righe e alle colonne di pixel nell'angolo superiore sinistro della bitmap.
Un pennello modello può essere eliminato senza influire sulla bitmap associata. Ciò significa che la bitmap può essere usata per creare un numero qualsiasi di pennelli di motivo.
Un pennello creato usando una bitmap monocromatica (1 piano di colore, 1 bit per pixel) viene disegnato usando il testo e i colori di sfondo correnti. I pixel rappresentati da un bit impostato su 0 vengono disegnati con il colore del testo corrente. I pixel rappresentati da un bit impostato su 1 vengono disegnati con il colore di sfondo corrente.
Per informazioni sull'uso CreatePatternBrush
di , una funzione di Windows, vedere Windows SDK.
Esempio
// 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
Inizializza un pennello con un colore a tinta unita specificato.
BOOL CreateSolidBrush(COLORREF crColor);
Parametri
crColor
Struttura COLORREF
che specifica il colore del pennello. Il colore specifica un valore RGB e può essere costruito con la RGB
macro in WINDOWS.H
.
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0.
Osservazioni:
Successivamente, il pennello può essere selezionato come pennello corrente per qualsiasi contesto di dispositivo.
Al termine dell'uso del pennello creato da CreateSolidBrush
, un'applicazione deve selezionare il pennello dal contesto di dispositivo.
Esempio
Vedere l'esempio per CBrush::CBrush
.
CBrush::CreateSysColorBrush
Inizializza un colore del pennello.
BOOL CreateSysColorBrush(int nIndex);
Parametri
nIndex
Specifica un indice di colore. Questo valore corrisponde al colore utilizzato per disegnare uno degli elementi della finestra 21. Per un elenco di valori, vedere GetSysColor
in Windows SDK.
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0.
Osservazioni:
Successivamente, il pennello può essere selezionato come pennello corrente per qualsiasi contesto di dispositivo.
Al termine dell'uso del pennello creato da CreateSysColorBrush
, un'applicazione deve selezionare il pennello dal contesto di dispositivo.
Esempio
// 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
Restituisce un puntatore a un CBrush
oggetto quando viene assegnato un handle a un oggetto Windows HBRUSH
.
static CBrush* PASCAL FromHandle(HBRUSH hBrush);
Parametri
hBrush
HANDLE in un pennello GDI di Windows.
Valore restituito
Puntatore a un CBrush
oggetto se ha esito positivo; in caso contrario NULL
, .
Osservazioni:
Se un CBrush
oggetto non è già collegato all'handle, viene creato e collegato un oggetto temporaneo CBrush
. Questo oggetto temporaneo CBrush
è valido solo fino alla successiva inattività dell'applicazione nel ciclo di eventi. Al momento, tutti gli oggetti grafici temporanei vengono eliminati. In altre parole, l'oggetto temporaneo è valido solo durante l'elaborazione di un messaggio di finestra.
Per altre informazioni sull'uso di oggetti grafici, vedere Oggetti grafici in Windows SDK.
Esempio
Vedere l'esempio per CBrush::CBrush.
CBrush::GetLogBrush
Chiamare questa funzione membro per recuperare la LOGBRUSH
struttura.
int GetLogBrush(LOGBRUSH* pLogBrush);
Parametri
pLogBrush
Punta a una LOGBRUSH
struttura che contiene informazioni sul pennello.
Valore restituito
Se la funzione ha esito positivo ed pLogBrush
è un puntatore valido, il valore restituito corrisponde al numero di byte archiviati nel buffer.
Se la funzione ha esito positivo e pLogBrush
è NULL
, il valore restituito è il numero di byte necessari per contenere le informazioni che la funzione archivierebbe nel buffer.
Se la funzione ha esito negativo, il valore restituito è 0.
Osservazioni:
La LOGBRUSH
struttura definisce lo stile, il colore e il motivo di un pennello.
Ad esempio, chiamare GetLogBrush
per trovare la corrispondenza con il colore o il motivo specifico di una bitmap.
Esempio
// 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
Utilizzare questo operatore per ottenere l'handle GDI di Windows collegato dell'oggetto CBrush
.
operator HBRUSH() const;
Valore restituito
In caso di esito positivo, un handle per l'oggetto GDI di Windows rappresentato dall'oggetto CBrush
; in caso contrario NULL
, .
Osservazioni:
Questo operatore è un operatore di cast che supporta l'uso diretto di un HBRUSH
oggetto .
Per altre informazioni sull'uso di oggetti grafici, vedere Oggetti grafici in Windows SDK.
Esempio
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);
Vedi anche
Esempio MFC PROPDLG
CGdiObject
Classe
Grafico della gerarchia
CBitmap
Classe
CDC
Classe